前言
为什么要写了,主要是因为每个月都会突然有一个项目,是有C/S架构的系统要渗透测试,所以其实记笔记,下次打开来看着流程测就完事了。
正文
1.检查是否加壳
C/S架构渗透,我个人理解中说到底就是逆向,所以第一步,首先就是查壳。这个挺简单,C/C++,delphi,VBasic这类语言的,可以使用exeinfope,PEID等软件就可以了,通常没加壳的软件都会如下图一样,直接显示是用什么语言编写的。
如果是用C#语言编写的,可以使用ScanId,若未加壳通常就会显示Unknown,除非是加了一些未知的程序检测不出来的壳。
2.查找EXE位置
当查找到软件未加壳后,下一步都会尝试将其拖进反编译工具中进行分析,而有的软件会将其EXE隐藏,例如后缀为.appref-ms的软件,这是用C#语言编写的软件,软件通过连网的方式,将其下载下来后打开,但是当将其拖进反编译软件或查壳软件时,会显示不是EXE文件,这时候就得寻找他的EXE文件路径。
此类软件的路径通常是:%LocalAppData%\Apps\2.0\,进入到此目录后,搜索.exe,就会出现你要找的文件
此时就可以快乐的将其拖入反编译软件了。
3.逆向修改代码逻辑
就是通过分析软件的运行流程,在关键点将其修改,达到其他效果。
例如一个软件,输入密码错误三次,就会被强制关闭。将其拖入OD,将这个退出的判断跳过。
如果是C#语言编写的,可以使用dnspy软件进行反编译。
像这里,拖进dnspy后,一个正常程序,都会有非常多的方法,类,所以要学会选择,有登录模块的,就看那个方法名叫login的。
在这里,通过判断userInfo这个变量,当他等于空的时候,就说密码输入错误,当不为空时,就登录成功呗。
因为userinfo的值是从Login这个函数里返回的,尝试跟进去发现直接修改返回值比较困难,因为这款工具,如果直接修改字符串的话,就很容易报错,这些报错是我不想面对的,所以我尝试通过修改IL指令,这里点击一下要修改的这行代码,然后右键就有一个编辑IL指令了。
会打开一个新的界面,此时认真观察可知,有几行是处于灰色选中状态,那么就表明,要修改的内容就在这里。
根据源代码可知要修改的代码里有一个NULL,所以IL指令ldnull就代表了null这个值,那么上面那个ldloc.3就等于userinfo了,这里我的修改逻辑就是,让他等于其他变量,比如text,那么判断就不会等于真,那就会跳到登录成功那里。
只需要修改为不等于loloc.3就好了,不过差别还是别那么大,IL指令很容易就会把代码修改成自己都不认识的样子
此时这个判断就是正确的那么将修改后的文件进行保存。
点击左上角的保存模块就可以了
后续就是,乱输入用户名密码是登录不成功的,因为userinfo这个值,相当于一个字典,里面有很多个key,任意输入用户名密码,系统就无法获取争取的value,那么传入进去以后代码就会报错。所以登录不进去。
4.DLL劫持
这个需要借助工具Process Monitor,这款软件确实牛逼,他可以监控软件打开时要调用的各种信息,包括注册表,dll库等等
软件打开时候是这样的。快捷键CTrl+L是设置过滤条件。
有很多选项,英语不太好,所以也无法知道这么多选项的每个功能,但是真的要用到的
Process Name是用来设置要监视的软件的
Event class是设置事件类别,例如(文件,注册表,进程)
Operation设置事件操作,例如(CreateFile)
通常我挖掘DLL劫持时候,就是如此设置
设置好过滤条件后,启动软件
接着就观察Result的值,当出现Name Not Found时,观察是不是DLL文件,如果是,就可以测试DLL劫持了。
可以使用MSF生成一个同名的DLL文件,放在那个目录处
1msfvenom -p windows/exec CMD=calc.exe -f dll -o DLL名.dll
生成的文件会被杀软杀掉,所以做好信任,或者退出杀软在测试。
5.密码明文传输
虽然很多都是用wireshark来监控流量,但是后面我还是觉得操作起来不太方便,特别是很容易在包里混入其他流量包,到了真的要分析时候,过滤等操作都比较麻烦,用Echo Mirage就没这么麻烦。
软件界面是这样的,左上角有一个
左上角有一个类似针管的图标,点击他,找到要监视的进程,点击确定即可
当软件进行登录,或者对外有网络连接时,流量就会被抓取,这比wireshark就方便很多了,定点捕获,不用担心有其他流量
6.SQL语句暴露
这个其实也是抓包,只是换一个工具比较方便。ProcessHacker
软件界面是这样的。
当打开你要的软件,然后在这里找到他,双击进去,这里有一个Memory。
去软件上执行你要的操作,比如登录或者增删改查等。操作完毕后,右下方有一个Strings按钮,点击他,默认操作就行,点击确定
在左下方有个Filter→Contains,输入你要搜索的内容,例如数据库的操作都设计Select、Where、Update等的关键词
7.弱口令
这个就是常规web渗透时候都会测试的操作了。
8.XSS
这是在一次搜索框中无意间测试到的,一开始在测试SQL注入的,然后发现没什么反应,随手打了一串XSS语句,就弹了。
而且还是个存储性的XSS
9.SQL注入
这个也是在一些输入框里测试出来的。所以说输入框要多测试。
10.万能密码
这个是上面那个逆向修改代码逻辑那里的,刚开始测出来时候,也不清楚到底是成了还是没成功,后面改了代码逻辑之后才知道是成功了的,只是传入进去的数据不对,代码报错了。
目前接触到的只有这几种了,至于那些什么命令执行,客户端溢出漏洞啥的,还没挖过,后面如果挖到了,就在补充把。
因为要过敏,所以把图片涂得像副画似的。。。