Saturday, December 11, 2010

Clip sinh họat ngày 11/12/ , nôi dung SQL Injection

Các bạn download clip và tài liêu tại : http://www.mediafire.com/nguyenhung162004#1,1 Nếu có gì thắc mắc các bạn vui lòng reply tại đây hoặc gửi mail về địa chỉ security.hcmus@gmail.com. Thân.

Friday, December 10, 2010

Sinh hoạt CLB thứ 7 ngày 11/12/2010

Chào các bạn,

Chiều thứ 7 tuần này (11/12/2010) , CLB Security sẽ tổ chức sinh hoạt định kỳ , chương trình như sau :

- T - Thời gian : 1g30 – 4g30

- Đ - Địa điểm : Phòng E402

- N - Nội dung :

o Điểm danh thành viên.

o CLB LiveUS giới thiệu về cuộc thi Imagine Cup và tuyển thành viên tham dự.

o Giao lưu với CLB LiveUS và CLB Design.

o Ôn lại lý thuyết SQL Injection.

o Thực hành – Demo SQL Injection các kỹ thuật từ cơ bản đến nâng cao.

o Chia nhóm CLB.

o Thu lệ phí (20k/bạn).

Trân trọng.

Monday, November 15, 2010

Thông báo đóng cửa diễn đàn EnHack.Net

Do nhu cầu sử dụng diễn đàn ngày càng thấp cũng như nội dung thảo luận ngày càng ít nên BCN đã quyết định đóng cửa diễn đàn từ hôm nay ! Chúng ta sẽ chuyển sang sử dụng mail list và IRC để trao đổi thông tin cũng như tài liệu.

Ngoài ra, để nâng cao chất lượng CLB, BCN sẽ tiến hành loại bỏ một lượng lớn các thành viên không hoạt động !

Chúc các bạn tuần mới vui vẻ :D

Tuesday, August 24, 2010

ERC with CSF Firewall

ERC with CSF Firewall

Source of csf.php

Note: BlogSpot don't let me use ">>" in code, so I had to remove the PHP tags from the source code, please add them by yourself, thanks !
while(1) {

 $today = getdate();
 $denied = 'Denied-'.$today["mday"].'-'.$today["mon"].'-'.$today["year"];

 if(file_exists('/var/www/csf/bad.csf')){

  $list = file('/var/www/csf/bad.csf', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  
  for($i = 0; $i < count($list); $i++ ) {
   system('csf -d '.$list[$i]);
   system('echo '.$list[$i].' >> /var/www/csf/'.$denied);
   unlink($path.'locked-'.$list[$i]);
  }

 unlink('/var/www/csf/bad.csf');

 }
 
 sleep(10);
}


Source of erc.php
 $clps) {
  if($list[$last - $clps] != $list[$last]) $ban = 0;
 } else $ban = 0;

 if($ban) {
  $in = $_SERVER['REMOTE_ADDR']."\n";
  $lock = fopen($path.'bad.csf','a');
  fwrite($lock, $in);
  fclose($lock);
  
  $lock = fopen($path.'locked-'.$_SERVER['REMOTE_ADDR'],'a');
  fclose($lock);
  
  unlink($path.'erc-'.$_SERVER['REMOTE_ADDR'].'.log');
 }

 if($last > 5) unlink($path.'erc-'.$_SERVER['REMOTE_ADDR'].'.log');
 $ban = 1;
}

* Deploy instruction:
- make /var/www/csf directory
- put erc.php and csf.php in to /var/www/csf/
- edit the php.ini:
auto_prepend_file = /var/www/erc.php
Then restart the webserver
# service httpd restart

And now run the csf.php in the command line with root:
# php -n /var/www/csf/csf.php &

Now just view the Denied-xxx log to know who has been blocked by CSF in day :D

PHP script for SVN auto exporting new commited files

 /var/www/svn.status');
 $x = file('/var/www/svn.status', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 if (count($x) > 1) {
  for ($i = 0; $i < count($x) - 1; $i++) {
   $changed = explode('/var/www/test/', $x[$i]);
   system('rm -f /var/www/test/'.$changed[1]);
   system('cp -f /var/www/test/'.$changed[1].' /var/www/html/'.$changed[1]);
  }
 } else {
  system('cat /var/www/svn.status > /var/www/html/rev.txt');
  system('chown -R apache.apache /var/www/html/'); //option, not require always.
 }
 
 sleep(5);
}

?>

Legend:
/var/www/test/ : the svn folder.
/var/www/html/ : the pubic web folder.
apache.apache : the user and group of apache.

Friday, August 20, 2010

Reverse IP - The 1st product writen in Python

Base on the idea of this entry posted on 12/31/2009
import httplib, urllib, socket, sys
from xml.dom.minidom import parse, parseString


if len(sys.argv) == 2:
 AppId = '1734E2C92CA63FAA596335295B09CF1D0B5C6161'
 domain = sys.argv[1]
 sites = [domain]
 
 ip = socket.gethostbyname(domain)
 offset = 50
 while offset < 300:
  uri = "/xml.aspx?AppId=%s&Query=ip:%s&Sources=Web&Version=2.0&Market=en-us&Adult=Moderate&Options=EnableHighlighting&Web.Count=50&Web.Offset=%s&Web.Options=DisableQueryAlterations"%(AppId, ip, offset)
 
  conn = httplib.HTTPConnection("api.bing.net")
  conn.request("GET", uri)
  res = conn.getresponse()
  data = res.read()
  conn.close()
  
  
  xmldoc = parseString(data)
  nameEls = xmldoc.getElementsByTagName('web:DisplayUrl')
  for el in nameEls:
   temp = el.childNodes[0].nodeValue
   temp = temp.split("/")[0]
   if temp.find('www.') == -1:
    if temp not in sites:
     sites.append(temp)
  
  offset += 50
 
 print "\n\n"
 print "Total: %d domain(s)\n\n"%len(sites)
 for i in sites:
  print i
 print "\n\n"

else:
 print "\n\n\n"
 print "=====================================\n"
 print "Usage: $ python reverse.py domain.com\n"
 print "Ex: $ python reverse.py enhack.net   \n"
 print "=====================================\n"
 print "\n\n\n"

Thursday, August 12, 2010

Some useful IRC commands

The best way: using "help" command

/ns help [command]
and
/cs help [command]

Some examples:

1. Register with NickServ

/ns register

2. Identify yourself with NickServ

/ns id

3. Register a channel

/cs register #channel

4. View info about a channel

/cs info #channel

5. Set SECURE mode to "Prevents unauthorized users from gaining operator status" and GUARD mode to "Sets whether or not services will inhabit the channel"

/cs set #channel GUARD ON
/cs set #channel SECURE ON

6. Gain OP from your channel via @ChanServ:

Join #channel then:

/cs op #channel

7. Auto Grant OP from your channel via @ChanServ:

Join #channel then:

/cs flags #channel <nickname> +O

Saturday, April 17, 2010

How to disable IPv6 in RHEL 5, Fedora, CentOS?

In Red Hat Enterprise 5 Linux internet protocol version 6 (IPv6) module is turned on by default and if your network is not ready to run IPv6 then you need to turn it off on your Linux server.

Steps to disabled IPv6 on RHEL 5:

1. In Fedora, CentOS or RHEL5 Linux modules are loaded using /etc/modprobe.conf file.

Add these line to disable autloading of IPv6 module in /etc/modprobe.conf
alias net-pf-10 off
alias ipv6 off 
2. Next edit /etc/sysconfig/network
# nano /etc/sysconfig/network 


Change to the following.
NETWORKING_IPV6=no 


3. Also to disable the IPv6 service.
# service ip6tables stop 


4. permanently disabling.
# chkconfig ip6tables off 

"setquota" interrupts virtualmin working

Last night, I try to install virtualmin on CentOS 5 and it had tried to "setquota" for a long time, but it seemed to be never end :D
Oki, then :
- Ctrl - C to terminate the installation
- rename /usr/sbin/setquota setquota.bak, make a new setquota:
# cd /usr/sbin/
# mv setquota setquota.bak
# echo "exit 0;" > setquota
# chmod 755 setquota

Now let run the installer again :D

Monday, March 8, 2010

Đú 3G cho con Fone

Các bước như sau:

1. Soạn tin 3G ON gởi 161
2. Soạn tin D tenmay gửi 191, lưu 3 tin nhắn cấu hình tự động với pass là 1111 (nếu yêu cầu)
3. Soạn tin tengoicuoc gửi 191
4. Khởi động lại fone

Tham khảo:
http://viettelonline.com/3g-viettel/cac-goi-cuoc-3g-viettel
http://viettelonline.com/3g-viettel/cai-dat-3g-viettel

Sunday, January 24, 2010

Những ngày tập đi - Kì V

Tại sao ta muốn trở thành hacker ?
Bạn đã bao giờ tự hỏi câu trên chưa ? Nếu có câu trả lời của bạn là vì sao ? Còn với tôi ngày đó, nó là: để được nổi danh, thích chứng tỏ mình và một chút, chỉ một chút, một chút xíu gọi là thích tìm tòi với nhiều ngộ nhận !

Ngày đó, trên phim ảnh, báo chí đôi khi cũng nhắc đến từ "hacker", hay tệ hơn là "tin tặc", những "phép màu" mà họ làm được thực sự quyến rũ tôi, và tôi thực sự muốn được như họ, song trên thực tế điều đó là không dễ gì, vào cái thời IE5 và IRC còn phổ biến, một số ít bắt đầu sử dụng Yahoo Messger 4 thì có thể nói là thời kì sơ khai của Internet ở Việt Nam, lúc đó ADSL mới được cung cấp lần đầu, không ít quán net còn Dial-up. Cái thời đó hack đối với tôi chỉ là bomb mail, kick, boot, và password (YM, Email), bởi lẽ lúc bấy giờ cái khái niệm forum đối với tôi còn quá mới mẻ, trong một lần đi sắm đĩa game, phần mềm, vô tình trong list software của cửa hàng có vài poster khá ngầu: "Hacker handbook, Master Hacker, Hacker Blackbook" ... và tất nhiên, tôi tậu bộ đĩa đó về và bắt đầu nghiền ngẫm, một thời gian thấy khó nhằn bởi toàn bộ viết bằng English và vốn từ English for IT của một thằng lớp 9 mới được sờ máy tính lần đâu của tôi còn hạn chế nên đọc và dịch nhiều lúc thấy tối nghĩa quá, và tôi bắt đầu một cuộc săn lùng mới. Tôi tìm thấy một CD Viethacker (cái này anh rickb phát hành nè) và bắt đầu đọc ... bằng tiếng Việt, để hiểu những thứ đề cập trong CD Viethacker đòi hỏi tôi phải nạp nhiều thứ để hỗ trợ, thực sự là rất mệt.

Thoắt cái 1 tuần trôi qua, với các tut và công cụ trong đó (về virus, trojan thôi) tôi bắt đầu "ứng dụng vào thực tế" và kết quả không mấy thoả mãn vì hàng họ trong CD cũng cũ mèm rồi, BKAV hay D32 cũng bắt được vài con nổi tiếng hiệu quả, thành thử lúc đó thì tìm được cái gọi là Magic PS 1.6, con này thì log password YM khỏi chê rồi. Lúc đó thì tôi bắt đầu tham gia một số các forum trong tỉnh và "trổ tài". Sau đó tôi đọc tất cả các cuốn sách tin học mà tủ sách của nhà tôi có, chưa thoả mãn, tôi tìm một cuốn VB6.0 và bắt đầu cho lập trình windows form. Không ít lâu sau tôi phải build lại Windows 98 vì nó là ổ dịch virus đủ chủng loại. Bẵng đi thời gian, tôi nhận thấy nhàm chán và chuyển sang mần học lập trình, pascal và mần web, lâu lắm, cũng được 1 năm tôi bắt đầu có chút hiểu biết về Web, cũng làm được một forum tương đối hoành tráng cho trường phổ thông nơi tôi học, cũng dần hiểu về thuật toán và mã lập trình. Từ đó tôi bắt đầu nhận ra, tôi là ai !

Mọi chuyện yên bình cho đến một hôm, forum trường phổ thông của tôi hiện đầu lâu, hồi ấy khái niệm local đối với tôi còn rất mới :D, tôi khôi phục và lại tiếp tục bị ủi, và lúc đó, một người bạn trong nhóm 6 người thành lập forum đó gặp tôi, và cả hai bắt đầu tìm hiểu về mã hoá, bảo mật website trên linux server. Chúng tôi học về PHP, học về các phương pháp cấu hình, mã hoá và giải mã chỉ trong chưa đầy 1 tuần, có lẽ là 5 ngày. Nhưng chừng đó đâu có đủ, và chúng tôi vẫn phải restore db liên tục trong quãng thời gian đó, bên cung cấp dịch vụ để apache nhân nhượng, mà sức tôi khi đó về linux thực sự mà nói là mù tịt. Đó là thời điểm cách đây 2 năm !

Bây giờ, tôi là ai ? Đã là một hacker hay là một rookie ? Lúc này cái đó không còn quan trọng nữa, những gì tôi thực sự nghiền ngẫm và ngộ ra, áp dụng chúng để hiện thực hoá những ý tưởng của tôi, mới chính là điều làm tôi cảm thấy vui nhất :)

Và tôi đã tự trả lời cho câu hỏi đầu entry, tôi muốn được thừa nhận là một con người có ích bằng chính những hành động của mình, lúc này, tôi nhận ra rằng, tôi không thích hợp để trở thành một hacker :D

Có lẽ entry này sẽ kết thúc chuỗi entry "Những ngày tập đi" và cũng là entry cuối của năm "con trâu", vì vậy phòng trường hợp đây là entry cuối, tôi chúc các bạn một cái Tết "con cọp" hạnh phúc bên gia đình và người thân :D

Thân !
Jutoms Nguyễn,

Friday, January 22, 2010

Firefox 3.6 is now ready



Bonous: fashion shop for Firefox 3.6 http://www.getpersonas.com/en-US/gallery/Firefox
Move the mouse on the poster to try :D

Tuesday, January 19, 2010

Using Suhosin to protect from attacking via PHP



Read about and download suhosin: http://www.hardened-php.net/suhosin/index.html
Then execute one by one these command below:
# wget http://download.suhosin.org/suhosin-0.9.29.tgz
# tar -xf suhosin-0.9.29.tgz
# cd  suhosin-0.9.29
# phpize
# ./configure
# make
# make install

Then run
# echo extension=suhosin.so > /etc/php.d/suhosin.ini

For testing suhosin has been installed properly, run this:
# php -v

If this appears, suhosin is now loaded with PHP.
with Suhosin v0.9.29, Copyright (c) 2007, by SektionEins GmbH

Now just restart apache:
# service httpd restart

CSF/LFD - Firewall based on iptables


CSF/LFD is the most powerful firewall based on iptables, easy for installing and configuring, it can protect your server better.
Read readme.txt and install.txt for instruction here:
http://www.configserver.com/cp/csf.html

Note that after installed CSF/LFD, you need to edit /etc/csf/csf.conf to set TESTING = "0" instead of "1" to enable CSF/LFD.

Quoted from install instruction:
Installation
============
Installation is quite straightforward:
# rm -fv csf.tgz
# wget http://www.configserver.com/free/csf.tgz
# tar -xzf csf.tgz
# cd csf
# sh install.sh
Next, test whether you have the required iptables modules:
# perl /etc/csf/csftest.pl
Don't worry if you cannot run all the features, so long as the script doesn't
report any FATAL errors

You should not run any other iptables firewall configuration script. For
example, if you previously used APF+BFD you can remove the combination (which
you will need to do if you have them installed otherwise they will conflict
horribly):
# sh /etc/csf/remove_apf_bfd.sh
That's it. You can then configure csf and lfd by edit the files
directly in /etc/csf/*, or on cPanel servers use the WHM UI

csf installation for cPanel is preconfigured to work on a cPanel server with all
the standard cPanel ports open.

csf installation for DirectAdmin is preconfigured to work on a DirectAdmin
server with all the standard DirectAdmin ports open.

csf auto-configures your SSH port on installation where it's running on a non-
standard port.

csf auto-whitelists your connected IP address where possible on installation.

You should ensure that kernel logging daemon (klogd) is enabled. Typically, VPS
servers have this disabled and you should check /etc/init.d/syslog and make
sure that any klogd lines are not commented out. If you change the file,
remember to restart syslog.

See the readme.txt file for more information.

Wednesday, January 13, 2010

ERC with iptables

Note that:
1. Using visudo to edit sudoes file to allow apache/user can run iptables
2. Be sure of iptables service is on:
# chkconfig iptables on
# service iptables restart
# iptables -F
And below is the code of ERC using iptables.
$ban = 1;
$clps = 3; // số yêu cầu tối đa cho phép trong một giây

$in = time()."\n";
$log = fopen('erc-logs/erc-'.$_SERVER['REMOTE_ADDR'].'.log', 'a');    fwrite($log, $in);    fclose($log);
$list = file('erc-logs/erc-'.$_SERVER['REMOTE_ADDR'].'.log', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$last = count($list)- 1;

if($last > $clps) {
    if($list[$last - $clps] != $list[$last]) $ban = 0;
} else $ban = 0;

if($ban) {
    system('iptables -A INPUT -s '.$_SERVER['REMOTE_ADDR'].' -j DROP');
}

if($last > 5) unlink('erc-logs/erc-'.$_SERVER['REMOTE_ADDR'].'.log');
$ban = 1;

Monday, January 11, 2010

iptables for simple packet filtering

Run these command Linux server to config iptables for protect your server from SYN flood, Port scanning, PoD attack (MrMe HVA):
# iptables -F
# iptables -A INPUT -p tcp --syn -m limit --limit 1/s –j ACCEPT
# iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# service iptables start
# chkconfig iptables on

Friday, January 1, 2010

Securing File Upload Feature

When an web app allows client to upload file, then the web app may be exploited to upload evil script, backdoor ... The problem is how to not only allow upload feature but also protect your webapp ?
First, we need to understand the basic of upload feature, see the PHP script to handle file upload below:
//Сheck that we have a file
if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
  //Check if the file is JPEG image and it's size is less than 350Kb
  $filename = basename($_FILES['uploaded_file']['name']);
  $ext = substr($filename, strrpos($filename, '.') + 1);
  if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && 
    ($_FILES["uploaded_file"]["size"] < 350000)) {
    //Determine the path to which we want to save this file
      $newname = dirname(__FILE__).'/upload/'.$filename;
      //Check if the file with the same name is already exists on the server
      if (!file_exists($newname)) {
        //Attempt to move the uploaded file to it's new place
        if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) {
           echo "It's done! The file has been saved as: ".$newname;
        } else {
           echo "Error: A problem occurred during file upload!";
        }
      } else {
         echo "Error: File ".$_FILES["uploaded_file"]["name"]." already exists";
      }
  } else {
     echo "Error: Only .jpg images under 350Kb are accepted for upload";
  }
} else {
 echo "Error: No file uploaded";
}
Source: http://www.webcheatsheet.com/php/file_upload.php
Now then think: - How can the php script above protect your webapp ? => It can protect uploaded files from being overwritten and just allow JPG file type can be uploaded. But: It quite simple to trick the webserver to bypass file type when upload, so the client can upload the evil script. And now we need a solution for restrict the execute of uploaded scripts. If using Apache, we can put a .htaccess file in the "upload" folder (chmod -w if you want more security) with the content like this (many ways to use):
Options -ExecCGI
AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi


The other way we can rename uploaded files if the ext name is not in our ext acceptable list. Ex:
abc.def => abc.jpg
abc.def.ghi => abc.jpg
...

If IIS ? :D

Dynamic Image Generation

While surfing, I found something useful to answer "How to creatie security images on the fly", simply see the PHP code below for step by step explaining:
//Send a generated image to the browser
create_image();
exit();

function create_image()
{
    //Let's generate a totally random string using md5
    $md5 = md5(rand(0,999)); 
    //We don't need a 32 character long string so we trim it down to 5 
    $pass = substr($md5, 10, 5); 

    //Set the image width and height
    $width = 100;
    $height = 20; 

    //Create the image resource 
    $image = ImageCreate($width, $height);  

    //We are making three colors, white, black and gray
    $white = ImageColorAllocate($image, 255, 255, 255);
    $black = ImageColorAllocate($image, 0, 0, 0);
    $grey = ImageColorAllocate($image, 204, 204, 204);

    //Make the background black 
    ImageFill($image, 0, 0, $black); 

    //Add randomly generated string in white to the image
    ImageString($image, 3, 30, 3, $pass, $white); 

    //Throw in some lines to make it a little bit harder for any bots to break 
    ImageRectangle($image,0,0,$width-1,$height-1,$grey); 
    imageline($image, 0, $height/2, $width, $height/2, $grey); 
    imageline($image, $width/2, 0, $width/2, $height, $grey); 
 
    //Tell the browser what kind of file is come in 
    header("Content-Type: image/jpeg"); 

    //Output the newly created image in jpeg format 
    ImageJpeg($image);
   
    //Free up resources
    ImageDestroy($image);
}
Source: http://www.webcheatsheet.com/php/dynamic_image_generation.php