前言

为什么要写了,主要是因为每个月都会突然有一个项目,是有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,那么传入进去以后代码就会报错。所以登录不进去。

IL指令详细


4.DLL劫持

这个需要借助工具Process Monitor,这款软件确实牛逼,他可以监控软件打开时要调用的各种信息,包括注册表,dll库等等

软件打开时候是这样的。快捷键CTrl+L是设置过滤条件。

有很多选项,英语不太好,所以也无法知道这么多选项的每个功能,但是真的要用到的

Process Name是用来设置要监视的软件的

Event class是设置事件类别,例如(文件,注册表,进程)

Operation设置事件操作,例如(CreateFile)

通常我挖掘DLL劫持时候,就是如此设置

设置好过滤条件后,启动软件

接着就观察Result的值,当出现Name Not Found时,观察是不是DLL文件,如果是,就可以测试DLL劫持了。

可以使用MSF生成一个同名的DLL文件,放在那个目录处

1
msfvenom -p windows/exec CMD=calc.exe -f dll -o DLL名.dll

生成的文件会被杀软杀掉,所以做好信任,或者退出杀软在测试。

Process Monitor中文手册

Process Monitor 事件翻译


5.密码明文传输

虽然很多都是用wireshark来监控流量,但是后面我还是觉得操作起来不太方便,特别是很容易在包里混入其他流量包,到了真的要分析时候,过滤等操作都比较麻烦,用Echo Mirage就没这么麻烦。

软件界面是这样的,左上角有一个

左上角有一个类似针管的图标,点击他,找到要监视的进程,点击确定即可

当软件进行登录,或者对外有网络连接时,流量就会被抓取,这比wireshark就方便很多了,定点捕获,不用担心有其他流量


6.SQL语句暴露

这个其实也是抓包,只是换一个工具比较方便。ProcessHacker

软件界面是这样的。

当打开你要的软件,然后在这里找到他,双击进去,这里有一个Memory

去软件上执行你要的操作,比如登录或者增删改查等。操作完毕后,右下方有一个Strings按钮,点击他,默认操作就行,点击确定

在左下方有个FilterContains,输入你要搜索的内容,例如数据库的操作都设计Select、Where、Update等的关键词


7.弱口令

这个就是常规web渗透时候都会测试的操作了。


8.XSS

这是在一次搜索框中无意间测试到的,一开始在测试SQL注入的,然后发现没什么反应,随手打了一串XSS语句,就弹了。

而且还是个存储性的XSS


9.SQL注入

这个也是在一些输入框里测试出来的。所以说输入框要多测试。


10.万能密码

这个是上面那个逆向修改代码逻辑那里的,刚开始测出来时候,也不清楚到底是成了还是没成功,后面改了代码逻辑之后才知道是成功了的,只是传入进去的数据不对,代码报错了。


目前接触到的只有这几种了,至于那些什么命令执行,客户端溢出漏洞啥的,还没挖过,后面如果挖到了,就在补充把。

因为要过敏,所以把图片涂得像副画似的。。。