找到
18
篇与
渗透实纪
相关的结果
- 第 2 页
-
磐云被黑最惨的一次 好玩 进入目标后看到数据包中的域名,复制到浏览器里可以正常使用。 一通瞎点看到返回的数据包内容全都被加密了。 加密就没办法了,那就找找接口吧。在找接口的过程中找到了一段神秘密文:wsafkb@q124129&,并且这段代码十分的不简单。看样子是把请求的数据解密后再把数据发送到服务端的过程。 知道了密钥那就解密一下数据看看效果。随机选择了一个响应数据,把密钥填进去解密后果然获得了明文数据。 点击报告查询功能,看到请求包末尾是加密后的状态解密看看。 其中mrn对应的参数中文释义是病历号,再细看他的序号是有规律的,截至目前到我这是:25年第005416份报告。 知道了病历号的规律那查看一下其他人的报告试试。bp开启拦截功能,然后修改请求包后面的加密内容,直接可以越权查看到别人的体检报告。后续尝试了一下,这个小程序所有功能点都是同样这种加解密的方式来获取数据的,这边就不一一演示了。 磐云:玩呢! 你以为到这里就结束了吗,不可能,根本停不下来。注意到响应包的头是360的磐云。众所周知防火墙都是要靠数据包内容来判断是否有威胁的,但是这个小程序的数据包内容都被加密了磐云肯定检测不出来请求是否有威胁性,但也不能排除磐云有没有单独的为这个单位经行定制适配,如果适配了那么我们在请求包中带有威胁函数的请求就会被识别并拉黑。 随机选个一功能点,bp拦截请求包,在请求里面添加一个'看看有没有sql注入漏洞 解密响应包的内容,果然有sql注入 这不就来了吗。并且能够getshell。 代码分析 以下是完整的代码 "6f54": function(e, t, n) { "use strict"; n("7a82"), Object.defineProperty(t, "__esModule", { value: !0 }), t.Decrypt = r, t.Encrypt = function(e) { var t = a.enc.Utf8.parse(e) , n = a.RC4.encrypt(t, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }); return n.ciphertext.toString().toUpperCase() } , t.isDecrypt = function(e) { try { r(e) } catch (t) { return !1 } return !0 } , n("d401"), n("d3b7"), n("25f0"); n("786d"); var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&"); function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() } },其中最主要的代码是这段: var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&"); function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() }这段代码首先定义加密库和密钥。a是加密库,o和i是密钥和初始化向量,字符串为:wsafkb@q124129&的UTF-8格式。 var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&");这段是定义解密函数,主要是对输入的字符串e进行解密。解密步骤:先把输入的字符串e解析为十六进制格式,再把十六进制数据转换为Base64格式。然后使用RC4算法解密,密钥为o(就是上面o定义的值),初始化向量为i,模式为CBC,填充方式为PKCS7。最后把解密结果转换为UTF-8字符串并返回。 function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() }磐云 你加密数据包干什么呀?啊!你这种操作会把我的作用给异化掉的懂吗?知不知道什么叫防火墙?啊!你能说我没有起到作用吗? 我跟你打个比方啊,比如说你倒车入库。你用自动泊车功能,成功入库后,哎呀!自动泊车得了MVP!一看激光雷达天天在那,就是测距、识物。躺赢狗!激光雷达就是躺赢狗!激光雷达的评分是3.0。自动泊车一键入库省时省力对吧,13.0carry局能这样算吗?啊!你告诉我激光雷达是不是躺赢狗啊!马勒戈壁的,真是神经病! 你加密数据包干嘛呢?那不是要具体看数据包内容,看它有什么行为吗?啊!我每天检查这些加密后的数据包我都不知道里面是啥,你还说我没起到作用!傻逼啊!要不让你们开发自己开发一个防火墙来检测数据,他们又不愿意。你说我怎么保护你啊。 -
对目标企业一个全面的渗透过程 常规测试 站点首页 企业官网,没啥可打的。Ping域名得到ip,扫描端口只开了80和443。那就打子域名吧。 存储桶目录遍历 通过信息收集,找到了两个存储桶,都可以目录遍历,其中crms泄露了39份文件,huyonguangfu泄露了44万份。 存储桶文件上传 通过尝试名为crms的存储桶可以上传文件。 Nacos弱口令 在无意之间遇到3个站,首页是这样。 原本想试着放bp里爆破账号密码的,出于习惯顺手查看一下插件有没有出货啥的。这一看果然还真爆装备了。 看到nacos的密码就知道是默认的,直接反手登录到nacos 翻了一下还存在其他账户,不过已经有一个账户了其他的都无所谓了。 多个漏洞 通过检测还存在其他类型漏洞 存储桶接管 查看了一下dassolarprod继续爆装备,配置中写了华为的ak、sk。 我直接接管好吧。查看了一下内容,接管到就是文章一开始提到的存储桶。 jboss多个漏洞 这个站,存在jboss的反序列化、代码执行、未授权访问漏洞 最后一个弱口令 最后还有一个弱口令 -
另类打法思路 突破 站点首页 首先得知目标站点存在sql注入漏洞 找目标 打进数据库就是为了账户和密码,一开始我查看一下相关的库,但都不是我想要的。实在是不想一个一个翻直接一键dump。 把最终的扫描结果全部复制另存到一个txt中,手动搜索。 然后在yx_person表中找到了所有账户和密码。 下面是整理好后部分数据的样子。其中md5值:2e3216787eaf07e818cb27135352e8b8解密后是:666666,有了手机号和密码那就直接登录吧。 网页不允许登录,看来对地域有限制。尝试修改请求包中的ip和响应包内容,发包后还是会提示这个。去产品官网瞅瞅,说不定有意外收获啥的。 峰回路转 果然,提供app的登录方式,果断下载软件和模拟器。 环境一切安排妥当后直接成功登录的目标账号。但是这个账号权限太低了,没法玩。 爆装备 重新查看sqlmap返回的信息,意外发现有两个表爆装备。 第一个:yx_sys_verifycode,第二个:yx_sms_sendrecords。 这两个表用来记录短信内容,例如验证码登录、重置密码。第二个表中记录的更加详细,短信中的每个字都记录的一清二楚,不光包含验证码信息,还包含了修改后的密码信息。我直接在这里表里面找权限高的账户。 通过和yx_person表中的职位匹配还真找到一个管理员账户密码。 但只是一个二级管理员,没啥玩头。 奇思妙想 重新回看yx_sms_sendrecords表,他记录的信息中还包含短信验证码的发送时间,那我是不是可以重置最高管理员的密码,然后从数据库里查看发送的短信验证码,这样就可以通过身份验证从而重置密码了,逝一下。 输入管理员手机号、图形验证,最后获取验证码。页面提示验证码已发送,但是读取yx_sms_sendrecords表后发现并没有短信记录,看来这张表只记录成功被使用的验证码和修改密码后的短信提示。