记一次sqlserver密码重置引出的C#网站代码简单逆向

admin 2024年12月17日13:38:54评论7 views字数 1591阅读5分18秒阅读模式
记一次sqlserver密码重置引出的C#网站代码简单逆向
01

 事件起因

经客户联系,说公司sqlserver服务器的密码忘记了,希望重置密码,又不清楚账号,在远程指导使用sa/服务器密码后返回18456错误,说明账号或密码错误。

记一次sqlserver密码重置引出的C#网站代码简单逆向

尝试使用windows身份认证后依然出现同样的错误

记一次sqlserver密码重置引出的C#网站代码简单逆向因为确实没见过这种情况,所以我们猜测是服务器工作组用户名称被修改导致无法登录,在尝试新建用户登录未果后,查询资料发现了一个‘-m’参数,通过脱机登录方式登录数据库,修改sa密码

记一次sqlserver密码重置引出的C#网站代码简单逆向
02

重置密码

1.打开sqlserver配置管理器

记一次sqlserver密码重置引出的C#网站代码简单逆向

2.选中sqlserver服务,点击属性

记一次sqlserver密码重置引出的C#网站代码简单逆向

3.点击高级选择启动参数,在最后加入“;-m”

记一次sqlserver密码重置引出的C#网站代码简单逆向

4.重启服务

记一次sqlserver密码重置引出的C#网站代码简单逆向

5.选择windows身份认证登录

记一次sqlserver密码重置引出的C#网站代码简单逆向

6.选择安全性-登录名-用户名,并修改密码

记一次sqlserver密码重置引出的C#网站代码简单逆向

7.退出数据库,右键服务选择属性,进入高级选项并删除“;-m”

记一次sqlserver密码重置引出的C#网站代码简单逆向

8.重启服务后,即可使用账号密码登录

记一次sqlserver密码重置引出的C#网站代码简单逆向

记一次sqlserver密码重置引出的C#网站代码简单逆向
03

引出事端

本以为事情就这么结束了,但是心里总觉得忘了什么,正在思考的时候,客户突然来消息说他们的站点突然都登录不上了。我内心一紧,坏了,原来他们的站点都是使用sa账户连接的数据库,而客户由于一些原因和开发方有些矛盾,无法获得网站源码,又缺少运维,同样也没有拿到数据库密码,也是因为这个原因才会找我们来重置密码,客户的网站为C#编写的,并编译成了动态链接库文件,咨询了朋友后发现只能通过反编译dll文件,获取绑定数据库的账号密码,并将数据库密码修改回去

记一次sqlserver密码重置引出的C#网站代码简单逆向
04

反编译

1.C#反汇编工具

我对C#编写的网站本就很少接触到,之前学习逆向时用到的也都是IDA和OllyDebug之类的工具,经过查询资料得知了一款好用的软件:DNSPY

2.可行性尝试

从客户拿来了一个文件先做可行性尝试,打开一个文件后第一时间是懵的,我就打开了一个怎么这么多资源,后来观察资源名猜测,大概是系统内置的动态链接库

记一次sqlserver密码重置引出的C#网站代码简单逆向

查看文件引用大概能证实这一观点

记一次sqlserver密码重置引出的C#网站代码简单逆向

查看内容后发现了源代码,虽然代码编写方式不一定一样,但实现原理应该不会有问题,证实了此方法可行,于是向客户要来了一套系统的dll资源,开始反汇编的实验

记一次sqlserver密码重置引出的C#网站代码简单逆向

3.反汇编

DNSPY打开全部文件,打开后第一眼是混乱的,毕竟这么多文件不能一行行去找,第一步需要知道C#连接数据库的方式以及引用的内部文件名,再次查询资料得知,C#连接数据库需要引用System.Data以及System.Data.SqlClient库,调用SqlConnection对象,这就方便了,我开始查看每个文件的引用,寻找引用了System.Data的资源,最终筛选出了五个资源。

记一次sqlserver密码重置引出的C#网站代码简单逆向

记一次sqlserver密码重置引出的C#网站代码简单逆向

之后就开始代码审计,与其说代码审计不如说代码查找,在每个文件中查找调用了SqlConnect对象代码,但是好几个文件下来居然没有找到,正在心慌的时候突然看到一个函数名很显眼,SqlParameter是代码在使用参数化执行语句的时候,使用该对象对执行语句中的参数赋值,既然有sql执行语句,要传入参数,那就肯定要连接数据库,果然,把这几个文件从头看到尾终于发现了存放数据库账号密码的字符串

记一次sqlserver密码重置引出的C#网站代码简单逆向

记一次sqlserver密码重置引出的C#网站代码简单逆向

至此总算结束了,也算是获得了一次宝贵的项目经验

记一次sqlserver密码重置引出的C#网站代码简单逆向
05

总结

这次事件,或者说是事故还是给我们提了个醒,对数据库的操作需要尤其谨慎,考虑要全面,不是每次都有这样的好运气。而且通过这次不能算逆向又不能算代码审计的一次实验来看,需要学习的内容还很多,算是对自己的一次的告诫和勉励吧。

往期精彩推荐
记一次sqlserver密码重置引出的C#网站代码简单逆向

记一次搭建靶场渗透过程(1)

记一次搭建靶场渗透过程(2)

记一次搭建靶场渗透过程(3)

记一次sqlserver密码重置引出的C#网站代码简单逆向

记一次sqlserver密码重置引出的C#网站代码简单逆向

           团队介绍

银河护卫队super,是一个致力于红队攻防实战、内网渗透、代码审计、安卓逆向、安全运维等技术干货分享的队伍,定期分享常用渗透工具、复现教程等资源。欢迎有想法、乐于分享的具备互联网分享精神的安全人士进行交流学习。
记一次sqlserver密码重置引出的C#网站代码简单逆向

点击关注银河护卫队super

原文始发于微信公众号(银河护卫队super):记一次sqlserver密码重置引出的C#网站代码简单逆向

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月17日13:38:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次sqlserver密码重置引出的C#网站代码简单逆向https://cn-sec.com/archives/763520.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息