编程拉垮,新手如何开发属于自己的红队平台?[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后最终效果
2.接下来开始编写login.php和register.php
登录嘛,很简单嘛,只需要去数据库里面匹配账号密码就行了,但我们要知道,我们写的可是红队平台,首先要值得注意的地方就是安全、安全,只要有数据库操作的地方,就有可能存在注入,所以我们选择两种方式去防御注入:
一、对敏感字符函数进行过滤
二、外部waf脚本正则过滤
waf脚本:https://github.com/sec-hsm/ctf-tools/blob/f1542a2c1c0bf79b89a74f9cfffec2393c2e6ab3/AWD/waf.php
直接通过require_once包含waf脚本
<?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去过滤常见的输入危险字符
注册同样,往数据库里面插入两个参数,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
修改导航栏也非常方便,只需要修改class属性里面的导航名即可
<li><a href="bypass.html"><i class="fa fa-bullseye"></i> 免杀</a></li>
最终效果:
一、对功能页面跳转做优化,生成标签栏,使用jquery+bootstrap-closable-tab实现功能页面tab,通过在a标签添加onclick事件对tab-content进行触发,例如:
<a href="javascript:;" onclick='bypython()'>
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
实现效果:
二、判断当前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;?>
在右侧显示当前用户名
最终效果如下:
未完待续
到此,登录注册功能以及后台前端就实现了
本文作者为白色键盘,转载请注明。
你快点更新,我还要看呢
@sb你可以去我的微信公众号去看