nfine框架 上传文件_AWD攻防框架YMLAWDFRAMEWORK

本文介绍了作者开发的线下半自动AWD攻防框架,该框架包括ip和shell存储、不死马上传、流量混淆以及flag获取与提交等功能。框架支持范围ip和端口的添加,使用不死马模块进行不死马上传,流量混淆模块通过添加随机字符串模拟真实流量。此外,还提供了交互式体验和详细的使用方法。
摘要由CSDN通过智能技术生成

cbb38a0417776b54ec18a93c94e769e1.gif

花了大半个寒假的时间,终于完成了一直想写的awd线下半自动框架,编写过程中学到了很多,也感谢一些师傅的指点,文末会分享部分原创核心函数

框架已在我自有服务器搭建的awd环境下经过数次调试,修补了绝大部分致命bug

开发思路:

框架整体结构

|--main.py(主函数及cmd交互模块)

|

|--code--addshell.py(自写第三方库文件)

|

|--data(存放用于加载数据的TXT文件)

|

|--html(用于存放站点源码)

开发思路和部分模块工作原理

ip和shell存储模块

为了方便后续维护和新功能的添加,将以TXT文件读写的方式存储和读取ip和shell信息,方便在程序退出第二次使用时,快速加载已储存的ip和shell信息

ip录入模块

由于线下awd赛事靶机ip的不同(正式比赛中可能是范围类ip,小型比赛中可能是范围类端口),框架同时支持范围ip和端口的添加,两类例子如下

ip范围:

6e30369ece69be3ebcfae5092ec1547e.gif

端口范围:

ee216c0209985d3e7502816fad9e6ab3.gif

不死马上传模块

不死马是awd线下赛中一大杀器,其删不掉,改不了的特性往往能在线下赛中打乱对手的比赛心态,为了提高框架在各类环境成功生成不死马的几率,作者使用了直接在靶机上命令执行的方式(网上流行的不死马PHP启动文件的方式其实对于框架编写来说更加简单,但是其触发过程中可能遭遇目标靶机waf的拦截),在成功添加了基础shell后,可以直接使用不死马模块进行不死马上传,为适应各类基础shell,上传支持post和get两种方式。

核心代码如图

f2acf3ed6f8cb8757b2cdfab793e994f.png

流量混淆模块

在获取站点源码结构时本来想利用自己的靶机做目录遍历然后返回路径列表,后来为了提升效率选择了将源码放在本地进行遍历,在使用模块前需要在库中attack_all()函数中修改框架所在路径,如图

3386081429c1dc460fc8058b7a37b16c.png

为了模拟真实流量,在每段正常发送的URL后都会添加?shell=(随机字符串),已达到隐藏获取flag真实流量的目的,相应代码如图

b4d9869bde4e69fa886fe69d126612a7.png

c7dbb3444b7812c2fe4a1e3e401349bb.png

获取flag及提交模块

获取flag前需要再次添加shell,可以是生成的不死马shell,设置再次添加是为了当比赛中直接有可获取flag的后门时可以直接使用收发flag模块

同时为了避免框架出现不可预期错误,程序会将最新flag保存在data目录下,在flag获取模块中,自动的过滤了重复的flag,减轻了框架在本地环境下的运行负担

d01ec8a5d6ad6d0058709939937fe6d9.png

交互体验

为了框架的运行稳定性,使用了cmd模块,cmd模块类型提供了一个创建命令行解析器的框架,在某部分函数出错时,不至于导致框架崩溃

使用方法和基本流程:

命令集合:

Command Tips

------- -----------

addip 添加shell ip和端口

addshell 添加shell路径

saveshell 保存shell到文件

showip 查看ip列表

removeip 移除某个ip

clearip 清除ip列表

saveip 将ip保存到文件

updead 上传bash不死马文件(.crons.php)

loadip 加载储存的IP列表

loadwebshell 加载储存的shell列表

liuliang 进行流量混淆(请先添加ip或loadip)

addflagshell 添加获取flag的shell

saveflagshell 将获取flag的shell储存到文件

loadflagshell 加载储存的flagshell列表

getflag 获取flag(demo: getflag-cat /flag 注意分隔符是"-")

exit 退出

添加ip时需要添加ip地址和端口号,分割符为空格,两者皆支持范围添加,例如下面的例子

addip 10.10.10.10 80

addip 10.10.10.10-19 80

addip 10.10.10.10 80-90

removeip 可以删除掉自己机器的ip地址

确认ip地址无误后,可以通过saveip将其保存下来

addshell命令可以添加对方机器上的预留shell,支持get和post格式,已下是输入例子

addshell /a.php c post

addshell /a.php c get

其中c为a.php的密码

添加完成后通过saveshell保存下来

如果希望维持权限,可以通过Updead上传不死马文件

flagshell是特定的shell文件,因为用Python去实现菜刀的功能很麻烦,所以获取flag 暂时通过命令执行的方式进行获取,添加flagshell的语法和addshell一样

getflag需要附带获取flag的命令,添加后会提示输入提交flag的地址,这时需要用yml-flag来代替flag当做命令输入,如下图的演示

528528d74b0ccc3c922372830db3764e.gif

这样就可以进行自动获取和提交了

关于流量混淆模块:

本人项目是在E盘写的,所以要正常使用该模块需要放在E盘下,并将站点源码放入html目录

进行流量混淆时,需要先加载ip列表(loadip)而后使用命令liuliang进行流量混淆

为了程序更好的兼容,将程序打包成了exe可执行程序,无需安装Python环境即可使用

同时也将源码全部打包,欢迎各位大佬完善和指点

程序源码在github:https://github.com/yemoli/yml-AWD-FRAMEWORK

已打包为exe格式的文件在百度网盘:https://pan.baidu.com/s/17UWvbfer8vlCcKw3NaJ2Eg

提取码1q3j

b9581d79301d29a0f71814ddc328cb4c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值