小白从0到1打造属于自己的红队平台01-登录注册

白色键盘 4.3K 2

编程拉垮,新手如何开发属于自己的红队平台?[aru_7]

技术选型

前端(bootstrap+html5)//可直接在网上找模版
后端(PHP+mysql)//简单易用方便上手,新手也能用
程序处理(python、C、GO)//处理免杀,红队工具集成等多个功能

功能模块-免杀(python、C、GO)

1.shellcode加密(aes、des、base64)
2.权限维持(计划任务、开机启动),调用windowsapi、或者powershell调用api
3.ico图标选择库
4.messagebox弹窗口
5.沙盒检测机制

指纹识别

1.采用python本地字典(缺点:速度慢)
2.收费的指纹api接口

常用设备后台口令查询

1.php+本地字典

dnslog平台

1.github公开集成
项目地址:https://github.com/yumusb/DNSLog-Platform-Golang

fofa查询接口(php+python)

1.标题
2.IP
3.端口
4.翻页功能
5.导出功能

杀软对比

1.php+字典集成
项目地址:https://github.com/r00tSe7en/get_AV

webshell记录器

1.PHP+mysql

漏洞文库

1.集成公开文库
项目地址:https://github.com/cckuailong/vulbase

钓鱼文案库

1.自由整合

等等后续功能可自行添加。。

从0开始编写红队平台日记

1.前台登录页面
下载bootstrap直接调用bootstrap的图标库进行美化:https://github.com/twbs/bootstrap/archive/v3.4.1.zip
bootstrap/
├── css/
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ ├── bootstrap-theme.min.css
│ └── bootstrap-theme.min.css.map
├── js/
│ ├── bootstrap.js
│ └── bootstrap.min.js
└── fonts/
├── glyphicons-halflings-regular.eot
├── glyphicons-halflings-regular.svg
├── glyphicons-halflings-regular.ttf
├── glyphicons-halflings-regular.woff
└── glyphicons-halflings-regular.woff2

编写form表单传递给login.php进行登录

<form class="form" name="admin" id="admin" action="/User/login.php" method="post" onsubmit="return yz();">
<p><center>账号:<input style="width:300px;height:50px" type="text" class="form-control" id="LAY-user-login-username" placeholder="Username" name="username"></center></p>
<p><center>密码:<input style="width:300px;height:50px" type="password" class="form-control" id="exampleInputPassword3" placeholder="Password" name="password"></center></p>
<p><center><input style="width:100px;height:50px" class="btn btn-default" type="submit" value="登陆"></center></p>
</form>

我们在onsubmit触发了一个yz()的事件,接下来我们写yz事件的内容

    <script>
        function yz()
        {
            if(document.admin.username.value=='')
            {
                alert('请输入用户名');
                return false;
            }
            if(document.admin.password.value=='')
            {
                alert('请输入密码');
                return false;
            }
        return true;
        }
    </script>

不允许前端username和password的值为空
当然也要写一个注册的表单

<form class="form" name="admin" id="admin" action="register.html" method="get" onsubmit="return yz();">
<p><center><input style="width:100px;height:50px" class="btn btn-default" type="submit" value="注册"></center></p>
</form>

添加各种css、js后最终效果
小白从0到1打造属于自己的红队平台01-登录注册
2.接下来开始编写login.php和register.php
登录嘛,很简单嘛,只需要去数据库里面匹配账号密码就行了,但我们要知道,我们写的可是红队平台,首先要值得注意的地方就是安全、安全,只要有数据库操作的地方,就有可能存在注入,所以我们选择两种方式去防御注入:
一、对敏感字符函数进行过滤
二、外部waf脚本正则过滤
waf脚本:https://github.com/sec-hsm/ctf-tools/blob/f1542a2c1c0bf79b89a74f9cfffec2393c2e6ab3/AWD/waf.php
直接通过require_once包含waf脚本

login.php

<?php
header("Content-Type: text/html;charset=utf-8");
require_once('../0000000000000waf.php');
$username=addslashes($_POST["username"]);//过滤sql
$password=addslashes($_POST["password"]);//过滤sql
$conn=mysqli_connect("localhost:3306","root","root") or die("连接失败");
mysqli_select_db($conn,"redteam");
mysqli_query($conn,"set names gb2312");
$result=mysqli_query($conn,"select * from user where username='$username' and password='$password'");
$row=mysqli_fetch_row($result);

if($row[0]!=1)
{
    echo "<script>alert('用户名或者密码错误');location.href='../login.html'</script>";
    exit;
}
    else
    {     
        $lifeTime = 24 * 3600;
        session_set_cookie_params($lifeTime);
        session_start();
        $_SESSION['username']=$username;
        $_SESSION["isok"]="ok";
        echo "登陆成功!'";
        header('Location: /home.php');exit;
    }
?>

登录成功后,生成一个session,持续时效为一天。
当然我们也需要使用addslashes去过滤常见的输入危险字符

register.php

注册同样,往数据库里面插入两个参数,username、password,同时验证code_num(邀请码)

require_once('../0000000000000waf.php');
header("Content-Type: text/html;charset=utf-8");
error_reporting(0);
$username = addslashes($_POST['username']);//过滤sql
$password = addslashes($_POST['password']);//过滤sql
$code_num = addslashes($_POST['code_num']);//过滤sql
if($username=="|"){
    echo "<script>alert('注册用户名存在非法字符,请重新注册');location.href='../'</script>";
    exit;
}
$conn=mysqli_connect("localhost:3306","root","root") or die("连接失败");
mysqli_select_db($conn,"redteam");
mysqli_query($conn,"set names gb2312");
$result=mysqli_query($conn,"select * from code where code_num='$code_num'");
$result2 = mysqli_query($conn,"select * from user where username='$_POST[username]'");
$row=mysqli_fetch_row($result);
$rs = mysqli_fetch_row($result2);

接下来需要做两个判断
1.判断数据库用户名是否存在,返回exit(),弹出用户名存在的消息框。
2.判读数据库邀请码(code_num)是否存在,返回注册成功,并且使用insert into user (id,username,password) 去插入用户名密码到数据库,并且DELETE销毁code_num
完整代码:

<?php
require_once('../0000000000000waf.php');
header("Content-Type: text/html;charset=utf-8");
error_reporting(0);
$username = addslashes($_POST['username']);//过滤sql
$password = addslashes($_POST['password']);//过滤sql
$code_num = addslashes($_POST['code_num']);//过滤sql
if($username=="|"){
    echo "<script>alert('注册用户名存在非法字符,请重新注册');location.href='../'</script>";
    exit;
}
$conn=mysqli_connect("localhost:3306","root","root") or die("连接失败");
mysqli_select_db($conn,"redteam");
mysqli_query($conn,"set names gb2312");
$result=mysqli_query($conn,"select * from code where code_num='$code_num'");
$result2 = mysqli_query($conn,"select * from user where username='$_POST[username]'");
$row=mysqli_fetch_row($result);
$rs = mysqli_fetch_row($result2);

if($rs>0)
{
    echo "<script>alert('用户名已存在,请重新注册!');location.href='../'</script>";
    exit;
}
if($row)
{
    $result = mysqli_query($conn,"insert into user (id,username,password) values ('1','$username','$password')");
    echo "<script>alert('注册成功,请重新登录');location.href='../'</script>";
    $result1 = mysqli_query($conn,"DELETE FROM code WHERE code_num ='$code_num'");
    exit;
}
    else 
    {
    echo "<script>alert('邀请码错误,请发送邮件到123@qq.com获取邀请码后注册!');location.href='../'</script>";
}
?>

3.后台前端模版选型
通过网上大量查找,发现Dark admin这套UI模版非常适合作为红队平台的后台,本身也是基于Bootstrap的,美化起来更方便
下载地址:https://www.bootstrapzero.com/bootstrap-template/darkadmin
小白从0到1打造属于自己的红队平台01-登录注册
修改导航栏也非常方便,只需要修改class属性里面的导航名即可

<li><a href="bypass.html"><i class="fa fa-bullseye"></i> 免杀</a></li>

最终效果:
小白从0到1打造属于自己的红队平台01-登录注册

后台处理页面home.php

一、对功能页面跳转做优化,生成标签栏,使用jquery+bootstrap-closable-tab实现功能页面tab,通过在a标签添加onclick事件对tab-content进行触发,例如:

<a href="javascript:;" onclick='bypython()'>

小白从0到1打造属于自己的红队平台01-登录注册

   function bypython(){

​        var id = "2";

​        var name = "python"

​        var uri = "/tool/shouye.html"

​        var closable = "1"

​        var item = {'id':id,'name':name,'url':uri,'closable':closable==1?true:false};

​        closableTab.addTab(item);

​    }

遇到坑点:最开始想的是通过onclick进行动态传值,利用网上的方法都不行,最后选择对每个功能onclick传入var固定变量值,直接触发closableTab.addTab
实现效果:
小白从0到1打造属于自己的红队平台01-登录注册

二、判断当前SESSION是否存在作为权限分离,并且获取当前SESSION的username用户名

<?php
require_once('0000000000000waf.php');
error_reporting(0);
session_start();
if($_SESSION["isok"]!="ok")
{
    echo "<script>alert('非法访问');</script>";
    echo "<script>location.href='../';</script>";
    exit;
}
else
{
    $username=@$_SESSION['username'];
    if ($username){
        echo "您好!".$username.",欢迎回来!";#获取username名
        echo '<a href="/User/logout.php">注销</a>';
    }
}

?>

直接通过

<?php echo "用户:".$username;?>

在右侧显示当前用户名
最终效果如下:
小白从0到1打造属于自己的红队平台01-登录注册

未完待续

到此,登录注册功能以及后台前端就实现了

发表评论 取消回复
表情 图片 链接 代码

  1. sb
    sb Lv 1

    你快点更新,我还要看呢

    • 白色键盘
      白色键盘 站长

      @sb你可以去我的微信公众号去看

分享