Skip to content

Commit

Permalink
Version 3.0.0
Browse files Browse the repository at this point in the history
1. 完成js模板,我的js模块,可以直接添加修改用于xss的js
2. 采用ace编辑器实现js代码高亮与错误检测
3. 使用js_beautify实现js代码格式化,使用jsmin实现js代码压缩
4. 整合xss'or工具部分功能,自由编码,方便生成最终的payload
5. 增加加密方式RC4,更改默认加密方式为RC4
6. 从旧版本升级并想保留记录的请务必查看Readme里的升级步骤
7. 修复一系列bug
  • Loading branch information
firesunCN committed Jan 23, 2016
1 parent f5ab50b commit 2644606
Show file tree
Hide file tree
Showing 73 changed files with 6,482 additions and 1,172 deletions.
504 changes: 335 additions & 169 deletions admin.php

Large diffs are not rendered by default.

256 changes: 230 additions & 26 deletions api.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,76 +5,280 @@
require_once("config.php");
require_once("dio.php");
header('Content-Type: application/json');

//时间戳的正则表达式
define('ID_REGEX', '/^[0-9]{10}$/');
//合法文件名的正则表达式
define('FILE_REGEX', '/(?!((^(con)$)|^(con)\..*|(^(prn)$)|^(prn)\..*|(^(aux)$)|^(aux)\..*|(^(nul)$)|^(nul)\..*|(^(com)[1-9]$)|^(com)[1-9]\..*|(^(lpt)[1-9]$)|^(lpt)[1-9]\..*)|^\s+|.*\s$)(^[^\/\\\:\*\?\"\<\>\|]{1,255}$)/');


//与xss记录相关api
if(isset($_GET['cmd']))
{
switch($_GET['cmd'])
{
//所有记录包括详细信息
//获取所有记录包括详细信息
case 'list':
echo json_encode(dirList());
echo json_encode(xss_record_detail_list());
break;

//只列出时间戳(索引id)
case 'simplelist':
echo json_encode(dirSimpleList());
//只获取时间戳(索引id)
case 'id_list':
echo json_encode(xss_record_id_list());
break;

//根据时间戳(索引id)获得单条信息
case 'get':
if(isset($_GET['id'])&&preg_match('/^[0-9]{10}$/',$_GET['id']))
echo json_encode(loadInfo($_GET['id']));
if(isset($_GET['id'])&&preg_match(ID_REGEX,$_GET['id']))
echo json_encode(load_xss_record($_GET['id']));
else
echo json_encode(false);
break;

//根据时间戳(索引id)删除单条信息
case 'del':
if(isset($_GET['id'])&&preg_match('/^[0-9]{10}$/',$_GET['id']))
echo json_encode(delInfo($_GET['id']));
if(isset($_GET['id'])&&preg_match(ID_REGEX,$_GET['id']))
echo json_encode(delete_xss_record($_GET['id']));
else
echo json_encode(false);
break;

//清空记录
case 'clear':
echo json_encode(clearInfo());
echo json_encode(clear_xss_record());
break;

default:
echo json_encode(false);
}
}
//与js模板相关api
else if(isset($_GET['js_template_cmd']))
{
switch($_GET['js_template_cmd'])
{
//获取所有js模板的名字与描述
case 'list':
echo json_encode(js_name_and_desc_list(JS_TEMPLATE_PATH));
break;

//添加js模板
case 'add':
if(isset($_POST['name'])&&isset($_POST['desc'])&&isset($_POST['content'])&&preg_match(FILE_REGEX,$_POST['name']))
{
if(!is_writable(JS_TEMPLATE_PATH))
echo json_encode(false);
else
{
save_js_desc(JS_TEMPLATE_PATH,$_POST['desc'],$_POST['name']);
save_js_content(JS_TEMPLATE_PATH,$_POST['content'],$_POST['name']);
echo json_encode(true);
}
}
else
echo json_encode(false);

break;

//修改js模板
case 'modify':
if(isset($_POST['old_name'])&&isset($_POST['name'])&&isset($_POST['desc'])&&isset($_POST['content'])&&preg_match(FILE_REGEX,$_POST['old_name'])&&preg_match(FILE_REGEX,$_POST['name']))
{
if(!is_writable(JS_TEMPLATE_PATH))
echo json_encode(false);
else
{
if($_POST['old_name']!=$_POST['name'])
delete_js(JS_TEMPLATE_PATH,$_POST['old_name']);

save_js_desc(JS_TEMPLATE_PATH,$_POST['desc'],$_POST['name']);
save_js_content(JS_TEMPLATE_PATH,$_POST['content'],$_POST['name']);
echo json_encode(true);
}
}
else
echo json_encode(false);

break;

//获取某一js模板的内容
case 'get':
if(isset($_GET['name'])&&preg_match(FILE_REGEX,$_GET['name']))
echo json_encode(load_js_content(JS_TEMPLATE_PATH,$_GET['name']));
else
echo json_encode(false);
break;

//删除js模板
case 'del':
if(isset($_GET['name'])&&preg_match(FILE_REGEX,$_GET['name']))
echo json_encode(delete_js(JS_TEMPLATE_PATH,$_GET['name']));
else
echo json_encode(false);
break;

//清空js模板
case 'clear':
echo json_encode(clear_js(JS_TEMPLATE_PATH));
break;

default:
echo json_encode(false);
}
}
//与我的js相关api
else if(isset($_GET['my_js_cmd']))
{
switch($_GET['my_js_cmd'])
{
//获取所有我的js的名字与描述
case 'list':
echo json_encode(js_name_and_desc_list(MY_JS_PATH));
break;

//添加js模板
case 'add':
if(isset($_POST['name'])&&isset($_POST['desc'])&&isset($_POST['content'])&&preg_match(FILE_REGEX,$_POST['name']))
{
if(!is_writable(MY_JS_PATH))
echo json_encode(false);
else
{
save_js_desc(MY_JS_PATH,$_POST['desc'],$_POST['name']);
save_js_content(MY_JS_PATH,$_POST['content'],$_POST['name']);
echo json_encode(true);
}

}
else
echo json_encode(false);

break;

//修改js模板
case 'modify':
if(isset($_POST['old_name'])&&isset($_POST['name'])&&isset($_POST['desc'])&&isset($_POST['content'])&&preg_match(FILE_REGEX,$_POST['old_name'])&&preg_match(FILE_REGEX,$_POST['name']))
{
if(!is_writable(MY_JS_PATH))
echo json_encode(false);
else
{
if($_POST['old_name']!=$_POST['name'])
delete_js(MY_JS_PATH,$_POST['old_name']);

save_js_desc(MY_JS_PATH,$_POST['desc'],$_POST['name']);
save_js_content(MY_JS_PATH,$_POST['content'],$_POST['name']);
echo json_encode(true);
}
}
else
echo json_encode(false);

break;

//获取某一js模板的内容
case 'get':
if(isset($_GET['name'])&&preg_match(FILE_REGEX,$_GET['name']))
echo json_encode(load_js_content(MY_JS_PATH,$_GET['name']));
else
echo json_encode(false);
break;

//删除js模板
case 'del':
if(isset($_GET['name'])&&preg_match(FILE_REGEX,$_GET['name']))
echo json_encode(delete_js(MY_JS_PATH,$_GET['name']));
else
echo json_encode(false);
break;

//清空js模板
case 'clear':
echo json_encode(clear_js(MY_JS_PATH));
break;

default:
echo json_encode(false);
}
}
else
echo json_encode(false);

function dirSimpleList() {

function xss_record_id_list() {
$files = glob(DATA_PATH . '/*.php');
foreach ($files as &$file){
$file=basename($file,".php");
$list=array();
foreach ($files as $file){
$filename=basename($file,".php");
if( preg_match(ID_REGEX, $filename) )
$list[]=$filename;
}
return $files;
return $list;
}

function dirList() {
function xss_record_detail_list() {
$list=array();
$files = glob(DATA_PATH . '/*.php');
arsort($files);

foreach ($files as $file) {
$filename=basename($file,".php");
$info=loadInfo($filename);
$isChange=false;

//如果没有设置location,就查询qqwry.dat判断location
if(!isset($info['location']))
if( preg_match(ID_REGEX, $filename) )
{
$info['location']=convertip($info['user_IP'],IPDATA_PATH);
$isChange=true;
$info=load_xss_record($filename);
if($info===false)
continue;

$isChange=false;
//如果没有设置location,就查询qqwry.dat判断location
if(!isset($info['location']))
{
$info['location']=stripStr( convertip($info['user_IP'],IPDATA_PATH) );
$isChange=true;
}

if($isChange)
save_xss_record(json_encode($info),$filename);
$list[]= $info;
}

if($isChange)
saveInfo(json_encode($info),$filename);
$list[]= $info;
}
return $list;
}

//获取js的名字与描述列表
function js_name_and_desc_list($path)
{
$list=array();
$files = glob($path . '/*.js');
arsort($files);

foreach ($files as $file){
//由于可能有中文名,故使用正则来提取文件名
$item=array();
$item['js_uri']=$file;

$filename=preg_replace('/^.+[\\\\\\/]/', '', $file);
$filename=substr ( $filename , 0 , strlen ($filename)-3 );
$item['js_name']=$filename;
$item['js_name_abbr']=stripStr($filename);

$result=@file_get_contents(dirname( __FILE__ ).'/'.$path.'/'.$filename.'.desc');
$result=$result?$result:"";


$result=decrypt($result);

if(json_encode($result)===false)
$result="加密密码不符,无法获得描述";

$item['js_description']=$result;
$item['js_description_abbr']=stripStr($result);

//特别注意:只有js_name_abbr,js_description_abbr经过stripStr处理
$list[]= $item;

}

return $list;
}
?>
6 changes: 3 additions & 3 deletions auth.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
}

//开启CSP
header("Content-Security-Policy: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none'");
header("X-Content-Security-Policy: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none'");
header("X-WebKit-CSP: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none'");
header("Content-Security-Policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-src 'none'");
header("X-Content-Security-Policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-src 'none'");
header("X-WebKit-CSP: default-src 'self'; style-src 'self' 'unsafe-inline';img-src 'self' data:; frame-src 'none'");

?>
Loading

0 comments on commit 2644606

Please sign in to comment.